diff --git a/.deployment/cleanup.php b/.deployment/cleanup.php deleted file mode 100644 index 2efc22f3..00000000 --- a/.deployment/cleanup.php +++ /dev/null @@ -1,36 +0,0 @@ -in( __DIR__ ); + +$config = new PhpCsFixer\Config(); + +return $config->setRules( [ + 'WordPress-Extra' => true, + 'strict_param' => true, + 'array_syntax' => [ 'syntax' => 'short' ], +] )->setFinder( $finder ); diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4d69be0f..3a34d4ca 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.0.2" + ".": "1.0.5" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b87ebbd..3d41d404 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## [1.0.5](https://github.com/linchpin/ash/compare/v1.0.4...v1.0.5) (2023-05-04) + + +### Miscellaneous Chores 🧹 + +* **NO-JIRA:** Organize warnings phpcs ([0017589](https://github.com/linchpin/ash/commit/0017589e1cdf1eea4ba8e188ec6994230e628b8d)) + +## [1.0.4](https://github.com/linchpin/ash/compare/v1.0.3...v1.0.4) (2023-05-04) + + +### Miscellaneous Chores 🧹 + +* **NO-JIRA:** Set wiki php version ([fd6e990](https://github.com/linchpin/ash/commit/fd6e9904c6e1ac2c0de413a890d519624a0911df)) +* **NO-JIRA:** Update dependencies in composer ([e7bd993](https://github.com/linchpin/ash/commit/e7bd99303c439867bece251be71017733de1d99a)) +* **NO-JIRA:** Update doc generation ([f78aa27](https://github.com/linchpin/ash/commit/f78aa27c6ba1408beab105b9b045a52e2cffaef0)) +* **NO-JIRA:** Update phpcs ([94911d6](https://github.com/linchpin/ash/commit/94911d63b027c9e81f466e8f4c1095e2acf54bb5)) +* **NO-JIRA:** Update workflows ([eb6a591](https://github.com/linchpin/ash/commit/eb6a59192388ac67abf6d613856480058bdc79b3)) + +## [1.0.3](https://github.com/linchpin/ash/compare/v1.0.2...v1.0.3) (2023-05-03) + + +### Changes to Existing Features 💅 + +* **NO-JIRA:** Layer ash on top ([2be367c](https://github.com/linchpin/ash/commit/2be367cc5b3c59aa5e18c0594e41ffb8483fbe4d)) + ## [1.0.2](https://github.com/linchpin/ash/compare/v1.0.1...v1.0.2) (2023-05-01) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..b68f9294 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders 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, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +opensource@wpengine.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state 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 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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. But first, please read +. diff --git a/README.md b/README.md index 09452463..0d2fdac1 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,32 @@ -# Ash a layering of features on top of Frost by WP Engine +# Ash + +A layering of Linchpin specific features on top of Frost by WP Engine. ## About -With its clean, minimal design and powerful feature set, Frost enables agencies to build stylish and sophisticated WordPress websites. Frost is a masterpiece of design and functionality. It features a range of valuable elements, including hero and portfolio sections, prominent call-to-action buttons, and customer testimonials. In addition, Frost utilizes the potential of the editor to create link pages, serve as a powerful tool for building relationships with clients, sharing valuable content, and boosting social media engagement. So whether you’re building a website for your business, personal brand, or creative project, Frost is the perfect solution for anyone looking to launch a website quickly and efficiently. See the Frost theme in action at [frostwp.com](https://frostwp.com/). +With its clean, minimal design and powerful feature set, Ash enables agencies to build stylish and sophisticated WordPress websites. It features a range of valuable elements, including hero and portfolio sections, prominent call-to-action buttons, and customer testimonials. In addition, Frost utilizes the potential of the editor to create link pages, serve as a powerful tool for building relationships with clients, sharing valuable content, and boosting social media engagement. So whether you’re building a website for your business, personal brand, or creative project, Frost is the perfect solution for anyone looking to launch a website quickly and efficiently. See the Frost theme in action at [frostwp.com](https://frostwp.com/). -Download the latest stable release: [frost-1.0.1.zip](https://github.com/wpengine/frost/releases/download/v1.0.1/frost-1.0.1.zip) +Download the latest stable release: [ash.zip](https://github.com/linchpin/ash/releases/) ## Requirements -- WordPress 6.2+ -- PHP 5.6+ -- License: [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html) or later +- WordPress 6.5+ +- PHP 8.2+ +- License: [GNU General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html) + +## Dependencies + +| Dependency | Version | License | Notes | +|-----------------|---------|---------------| --------------------------------------------- | +| Frost | 1.0.9 | GPLv2 or later | The base theme Ash was forked from | +| Husky | 9.0.2 | MIT | Used for commit linting for linchpin projects | ## Getting Started -You can download the latest stable release of Frost using the link above. Alternatively, install the entire repository for development purposes: +You can download the latest stable release of Ash using the link above. Alternatively, install the entire repository for development purposes: 1. Set up a local WordPress development environment, we recommend using [Local](https://localwp.com/). -2. Ensure you are using WordPress 6.2+. +2. Ensure you are using WordPress 6.5+. 3. Clone / download this repository into the `/wp-content/themes/` directory of your new WordPress instance. 4. In the WordPress admin, use the Appearance > Themes screen to activate Frost. diff --git a/assets/fonts/gilmer-bold.css b/assets/fonts/gilmer-bold.css deleted file mode 100755 index 9e1410aa..00000000 --- a/assets/fonts/gilmer-bold.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Bold -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Bold'; - src: url('gilmer-bold.eot'); - src: url('gilmer-bold.eot?#iefix') format('embedded-opentype'), - url('gilmer-bold.woff2') format('woff2'), - url('gilmer-bold.woff') format('woff'), - url('gilmer-bold.ttf') format('truetype'), - url('gilmer-bold.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-bold.eot b/assets/fonts/gilmer-bold.eot deleted file mode 100755 index 4066e7d5..00000000 Binary files a/assets/fonts/gilmer-bold.eot and /dev/null differ diff --git a/assets/fonts/gilmer-bold.svg b/assets/fonts/gilmer-bold.svg deleted file mode 100755 index 1d12cf95..00000000 --- a/assets/fonts/gilmer-bold.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-bold.ttf b/assets/fonts/gilmer-bold.ttf deleted file mode 100755 index 2dc04cf8..00000000 Binary files a/assets/fonts/gilmer-bold.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-bold.woff b/assets/fonts/gilmer-bold.woff deleted file mode 100755 index 9ac3a190..00000000 Binary files a/assets/fonts/gilmer-bold.woff and /dev/null differ diff --git a/assets/fonts/gilmer-bold.woff2 b/assets/fonts/gilmer-bold.woff2 deleted file mode 100755 index 22793f9a..00000000 Binary files a/assets/fonts/gilmer-bold.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.css b/assets/fonts/gilmer-heavy.css deleted file mode 100755 index 8e7ba3ee..00000000 --- a/assets/fonts/gilmer-heavy.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Heavy -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Heavy'; - src: url('gilmer-heavy.eot'); - src: url('gilmer-heavy.eot?#iefix') format('embedded-opentype'), - url('gilmer-heavy.woff2') format('woff2'), - url('gilmer-heavy.woff') format('woff'), - url('gilmer-heavy.ttf') format('truetype'), - url('gilmer-heavy.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-heavy.eot b/assets/fonts/gilmer-heavy.eot deleted file mode 100755 index aa39ed22..00000000 Binary files a/assets/fonts/gilmer-heavy.eot and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.svg b/assets/fonts/gilmer-heavy.svg deleted file mode 100755 index d3697365..00000000 --- a/assets/fonts/gilmer-heavy.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-heavy.ttf b/assets/fonts/gilmer-heavy.ttf deleted file mode 100755 index cd1aea95..00000000 Binary files a/assets/fonts/gilmer-heavy.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.woff b/assets/fonts/gilmer-heavy.woff deleted file mode 100755 index f28d8dcb..00000000 Binary files a/assets/fonts/gilmer-heavy.woff and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.woff2 b/assets/fonts/gilmer-heavy.woff2 deleted file mode 100755 index 0c5991df..00000000 Binary files a/assets/fonts/gilmer-heavy.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-light.css b/assets/fonts/gilmer-light.css deleted file mode 100755 index 7fb4ae80..00000000 --- a/assets/fonts/gilmer-light.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Light -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Light'; - src: url('gilmer-light.eot'); - src: url('gilmer-light.eot?#iefix') format('embedded-opentype'), - url('gilmer-light.woff2') format('woff2'), - url('gilmer-light.woff') format('woff'), - url('gilmer-light.ttf') format('truetype'), - url('gilmer-light.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-light.eot b/assets/fonts/gilmer-light.eot deleted file mode 100755 index ef2a6743..00000000 Binary files a/assets/fonts/gilmer-light.eot and /dev/null differ diff --git a/assets/fonts/gilmer-light.svg b/assets/fonts/gilmer-light.svg deleted file mode 100755 index 04c81b65..00000000 --- a/assets/fonts/gilmer-light.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-light.ttf b/assets/fonts/gilmer-light.ttf deleted file mode 100755 index 65f5a08a..00000000 Binary files a/assets/fonts/gilmer-light.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-light.woff b/assets/fonts/gilmer-light.woff deleted file mode 100755 index c04be8c6..00000000 Binary files a/assets/fonts/gilmer-light.woff and /dev/null differ diff --git a/assets/fonts/gilmer-light.woff2 b/assets/fonts/gilmer-light.woff2 deleted file mode 100755 index 5dab907f..00000000 Binary files a/assets/fonts/gilmer-light.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-medium.css b/assets/fonts/gilmer-medium.css deleted file mode 100755 index a38fbf07..00000000 --- a/assets/fonts/gilmer-medium.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Medium -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Medium'; - src: url('gilmer-medium.eot'); - src: url('gilmer-medium.eot?#iefix') format('embedded-opentype'), - url('gilmer-medium.woff2') format('woff2'), - url('gilmer-medium.woff') format('woff'), - url('gilmer-medium.ttf') format('truetype'), - url('gilmer-medium.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-medium.eot b/assets/fonts/gilmer-medium.eot deleted file mode 100755 index bb048187..00000000 Binary files a/assets/fonts/gilmer-medium.eot and /dev/null differ diff --git a/assets/fonts/gilmer-medium.svg b/assets/fonts/gilmer-medium.svg deleted file mode 100755 index 8b09eac1..00000000 --- a/assets/fonts/gilmer-medium.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-medium.ttf b/assets/fonts/gilmer-medium.ttf deleted file mode 100755 index 615fdee7..00000000 Binary files a/assets/fonts/gilmer-medium.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-medium.woff b/assets/fonts/gilmer-medium.woff deleted file mode 100755 index e248e37d..00000000 Binary files a/assets/fonts/gilmer-medium.woff and /dev/null differ diff --git a/assets/fonts/gilmer-medium.woff2 b/assets/fonts/gilmer-medium.woff2 deleted file mode 100755 index 3ebe650a..00000000 Binary files a/assets/fonts/gilmer-medium.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-outline.css b/assets/fonts/gilmer-outline.css deleted file mode 100755 index b19288f9..00000000 --- a/assets/fonts/gilmer-outline.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Outline -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Outline'; - src: url('gilmer-outline.eot'); - src: url('gilmer-outline.eot?#iefix') format('embedded-opentype'), - url('gilmer-outline.woff2') format('woff2'), - url('gilmer-outline.woff') format('woff'), - url('gilmer-outline.ttf') format('truetype'), - url('gilmer-outline.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-outline.eot b/assets/fonts/gilmer-outline.eot deleted file mode 100755 index b5429553..00000000 Binary files a/assets/fonts/gilmer-outline.eot and /dev/null differ diff --git a/assets/fonts/gilmer-outline.svg b/assets/fonts/gilmer-outline.svg deleted file mode 100755 index 89507a41..00000000 --- a/assets/fonts/gilmer-outline.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-outline.ttf b/assets/fonts/gilmer-outline.ttf deleted file mode 100755 index 5d30aaa3..00000000 Binary files a/assets/fonts/gilmer-outline.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-outline.woff b/assets/fonts/gilmer-outline.woff deleted file mode 100755 index 787e81eb..00000000 Binary files a/assets/fonts/gilmer-outline.woff and /dev/null differ diff --git a/assets/fonts/gilmer-outline.woff2 b/assets/fonts/gilmer-outline.woff2 deleted file mode 100755 index fe165297..00000000 Binary files a/assets/fonts/gilmer-outline.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-regular.css b/assets/fonts/gilmer-regular.css deleted file mode 100755 index d4874ec9..00000000 --- a/assets/fonts/gilmer-regular.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Regular -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Regular'; - src: url('gilmer-regular.eot'); - src: url('gilmer-regular.eot?#iefix') format('embedded-opentype'), - url('gilmer-regular.woff2') format('woff2'), - url('gilmer-regular.woff') format('woff'), - url('gilmer-regular.ttf') format('truetype'), - url('gilmer-regular.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-regular.eot b/assets/fonts/gilmer-regular.eot deleted file mode 100755 index 6d528a51..00000000 Binary files a/assets/fonts/gilmer-regular.eot and /dev/null differ diff --git a/assets/fonts/gilmer-regular.svg b/assets/fonts/gilmer-regular.svg deleted file mode 100755 index 4053d6c1..00000000 --- a/assets/fonts/gilmer-regular.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-regular.ttf b/assets/fonts/gilmer-regular.ttf deleted file mode 100755 index 679bf3e9..00000000 Binary files a/assets/fonts/gilmer-regular.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-regular.woff b/assets/fonts/gilmer-regular.woff deleted file mode 100755 index c66fc561..00000000 Binary files a/assets/fonts/gilmer-regular.woff and /dev/null differ diff --git a/assets/fonts/gilmer-regular.woff2 b/assets/fonts/gilmer-regular.woff2 deleted file mode 100755 index e92be881..00000000 Binary files a/assets/fonts/gilmer-regular.woff2 and /dev/null differ diff --git a/assets/js/ash.js b/assets/js/ash.js index e69de29b..454c4ec6 100644 --- a/assets/js/ash.js +++ b/assets/js/ash.js @@ -0,0 +1,36 @@ +/** + * Clickable elements + */ +document.getElementsByClassName('clickable').on( 'click', (event) => { + const tgt = event.target; + const href = tgt.getAttribute('href'); + + if ( href === null || href === undefined ) { + + event.preventDefault(); + event.stopPropagation(); + + const anchor = tgt.querySelector('a:first-of-type'); + const btn = tgt.querySelector('button:first-of-type'); + const uri = anchor ? anchor.getAttribute('href') : null; + const newWindow = tgt.classList.contains('external-link') || (anchor && anchor.classList.contains('external-link')) || (anchor && anchor.getAttribute( 'target' ) === '_blank') || event.metaKey || event.ctrlKey; + + if ( btn ) { + event.stopImmediatePropagation(); + btn.click(); + return; + } + + if ( ! btn && anchor ) { + if ( newWindow ) { + window.open( uri ); + } else { + window.location = uri; + } + } + + return false; + } else { + return; + } +}); \ No newline at end of file diff --git a/assets/scss/_frost.scss b/assets/scss/_frost.scss index 85793899..5cc83e1f 100644 --- a/assets/scss/_frost.scss +++ b/assets/scss/_frost.scss @@ -1,16 +1,14 @@ /* Defaults ---------------------------------------------------------------------------- */ -html { - box-sizing: border-box; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; -} - *, *::before, *::after { - box-sizing: inherit; + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; } a, @@ -19,263 +17,115 @@ input:focus, input[type="button"], input[type="submit"], textarea:focus, -.wp-block-button__link { +.wp-element-button { transition: all 0.2s ease-in-out; } a, -a:not(.wp-element-button), a:focus, -a:hover { - text-decoration: underline; +a:hover, +a:not(.wp-element-button) { text-decoration-thickness: 1px; } -ol, -ul { - margin: 0; - padding: 0; -} - b, strong { font-weight: var(--wp--custom--font-weight--medium); } -blockquote { - margin: 0; -} - -/* - * Alignment Styles - Originally from TT2. - * These rules are temporary, and should not - * be relied on or modified too heavily by - * themes or plugins that build on Frost. - * These are meant to be a precursor to a - * global solution provided by the Block Editor. - * - * Relevant issues: - * https://github.com/WordPress/gutenberg/issues/35607 - * https://github.com/WordPress/gutenberg/issues/35884 ----------------------------------------------*/ - -body > .is-root-container, -.edit-post-visual-editor__post-title-wrapper, -.wp-block-cover.alignfull, -.wp-block-group.alignfull, -.wp-block-group.has-background, -.wp-site-blocks { - padding-left: var(--wp--custom--spacing--outer); - padding-right: var(--wp--custom--spacing--outer); -} - -.block-editor-block-list__layout.is-root-container > .alignfull, -.is-root-container > .wp-block-cover, -.is-root-container > .wp-block-group.has-background, -.is-root-container > .wp-block-template-part > .wp-block-cover, -.is-root-container > .wp-block-template-part > .wp-block-group.has-background, -.wp-site-blocks .alignfull, -.wp-site-blocks > .wp-block-cover, -.wp-site-blocks > .wp-block-group.has-background, -.wp-site-blocks > .wp-block-template-part > .wp-block-cover, -.wp-site-blocks > .wp-block-template-part > .wp-block-group.has-background { - margin-left: calc(-1 * var(--wp--custom--spacing--outer)) !important; - margin-right: calc(-1 * var(--wp--custom--spacing--outer)) !important; - width: unset; +mark { + background: linear-gradient(90deg, var(--wp--preset--color--primary) 0%, var(--wp--preset--color--primary) 100%); + background-position: 0 85%; + background-repeat: repeat-x; + background-size: 100% 15%; } /* Blocks ---------------------------------------------------------------------------- */ -/* Button ---------------------------------------------- */ - - /* Calendar --------------------------------------------- */ .wp-block-calendar table caption, .wp-block-calendar table tbody { - color: var(--wp--preset--color--foreground); + color: var(--wp--preset--color--contrast); } .wp-block-calendar table th { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); + background-color: var(--wp--preset--color--contrast); + color: var(--wp--preset--color--base); } .wp-block-calendar tbody td, .wp-block-calendar th { - border: 1px solid var(--wp--preset--color--foreground); + border: 1px solid var(--wp--preset--color--contrast); padding: 10px; } -/* Caption ---------------------------------------------- */ - -.wp-block-embed figcaption, -.wp-block-gallery figcaption, -.wp-block-image figcaption, -.wp-block-table figcaption { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - margin-bottom: 0; - margin-top: 10px; - text-align: center; -} - -.wp-block-gallery figcaption { - margin-top: 0; -} - /* Code --------------------------------------------- */ -.wp-block-code, -.wp-block-code code { - border: none; -} - -.wp-block-code code { - overflow-wrap: normal; - overflow-x: scroll; - tab-size: 4; - white-space: pre !important; -} - -*:not(.wp-block-code) > code, -kbd { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); +*:not(.wp-block-code) > code { + background-color: var(--wp--preset--color--neutral); font-size: var(--wp--preset--font-size--small); padding: 5px 8px; - position: relative; - top: -1px; -} - -/* - * When inline code is selected, the Editor applies contextual styling. Since - * our code color is near white, we need to reset to the default text color. - */ -.rich-text:focus > code[data-rich-text-format-boundary], -.rich-text:focus > kbd[data-rich-text-format-boundary] { - color: currentColor; } /* Comments --------------------------------------------- */ -.wp-block-comment-template li { - margin-left: 0; +.wp-block-post-comments-form .comment-reply-title { + margin-bottom: var(--wp--custom--spacing--gap); } -.wp-block-post-comments-form input:not([type=submit]), +.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]), .wp-block-post-comments-form textarea { - border-color: var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form input[type=submit] { - border: 1px solid var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form .form-submit { - margin-bottom: 0; + border-color: var(--wp--preset--color--contrast); + padding: 10px 15px; } -/* Group ---------------------------------------------- */ - -.wp-block-group.is-style-full-height { - align-items: center; - display: grid; - min-height: 100vh; -} - -.wp-block-group.is-style-shadow { - box-shadow: 0 0 50px rgb(0 0 0 / 10%); +.wp-block-post-comments-form p:not(.form-submit) { + margin-bottom: 20px; } -.wp-block-group.is-style-shadow-solid { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -/* Image ---------------------------------------------- */ - -.wp-block-image.aligncenter { - margin-left: auto !important; - margin-right: auto !important; -} - -.wp-block-image.alignleft { - margin-right: 30px !important; -} - -.wp-block-image.alignright { - margin-left: 30px !important; -} - -.wp-block-image.is-style-shadow { - box-shadow: 0 0 50px rgba(0, 0, 0, .1); +.wp-block-post-comments-form .comment-form-cookies-consent label { + font-size: var(--wp--preset--font-size--x-small); } /* List --------------------------------------------- */ -ol li:where(:not([class*='block'])), -ol li:where(.wp-block-list), -ul li:where(:not([class*='block'])), -ul li:where(.wp-block-list) { - margin-left: 30px; -} - -.is-style-no-disc li { +.is-style-no-disc { list-style-type: none; - margin-left: 0; -} - -/* Media & Text ---------------------------------------------- */ - -.wp-block-media-text.is-style-shadow-media img { - box-shadow: 0 0 50px rgb(0 0 0 / 10%); + padding-left: 0; } /* Navigation --------------------------------------------- */ .wp-block-navigation__responsive-container.is-menu-open { - padding: 30px var(--wp--custom--spacing--outer); + padding-bottom: 30px; + padding-top: 30px } .wp-block-navigation__responsive-container-close, .wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--foreground); + border: 1px solid currentColor; padding: 2px; } -.has-background .wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--background); -} - .has-background .wp-block-navigation__responsive-container-open:focus, .has-background .wp-block-navigation__responsive-container-open:hover { - color: var(--wp--preset--color--background); -} - -.wp-block-navigation:not([style*=text-decoration]) a, -.wp-block-navigation:not([style*=text-decoration]) a:focus, -.wp-block-navigation:not([style*=text-decoration]) a:hover { - text-decoration: none; + color: var(--wp--preset--color--base); } /* Navigation Submenu --------------------------------------------- */ .wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container { - background-color: var(--wp--preset--color--foreground); - border: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); + background-color: var(--wp--preset--color--contrast); + border: var(--wp--preset--color--contrast); + color: var(--wp--preset--color--base); padding: 10px; } @@ -283,74 +133,9 @@ ul li:where(.wp-block-list) { padding: 2px 10px; } -/* Paragraph ---------------------------------------------- */ - -p.has-background { - padding: 20px 30px; -} - -/* Preformatted ---------------------------------------------- */ - -.wp-block-preformatted { - overflow-wrap: normal; - overflow-x: scroll; - white-space: pre; -} - -/* Pullquote ---------------------------------------------- */ - -.wp-block-pullquote p, -.wp-block-pullquote.alignleft p, -.wp-block-pullquote.alignright p { - font-size: var(--wp--preset--font-size--large); - line-height: var(--wp--custom--line-height--medium); - margin-bottom: 0; -} - -.wp-block-pullquote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-transform: inherit; -} - -/* Quote ---------------------------------------------- */ - -.wp-block-quote { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -.wp-block-quote p:last-of-type { - margin-bottom: 0; -} - -.wp-block-quote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-align: inherit; -} - /* Separator --------------------------------------------- */ -.wp-block-separator, -.wp-block-separator.has-css-opacity { - opacity: 1; -} - -.wp-block-separator:not(.is-style-dots), -.wp-block-separator.has-background:not(.is-style-dots) { - border-bottom: 1px solid currentColor; - height: 1px; -} - .wp-block-separator.is-style-dots:before { font-family: inherit; font-size: var(--wp--preset--font-size--large); @@ -358,11 +143,15 @@ p.has-background { padding-left: 10px; } -/* Site Title ---------------------------------------------- */ +.wp-block-separator:not(.is-style-wide):not(.is-style-dots) { + width: 100px; +} -.wp-block-site-title a { - text-decoration: none; +.wp-block-separator:not(.is-style-dots), +.wp-block-separator.has-background:not(.is-style-dots) { + border-bottom: 1px solid currentColor; + border-top: none; + height: 1px; } /* Table @@ -377,11 +166,11 @@ p.has-background { } .wp-block-table thead { - border-bottom: 3px solid var(--wp--preset--color--foreground); + border-bottom: 3px solid var(--wp--preset--color--contrast); } .wp-block-table tfoot { - border-top: 3px solid var(--wp--preset--color--foreground); + border-top: 3px solid var(--wp--preset--color--contrast); } .wp-block-table td, @@ -390,11 +179,11 @@ p.has-background { .wp-block-table.is-style-stripes td, .wp-block-table.is-style-stripes th, .wp-block-table.is-style-stripes tr { - border: 1px solid var(--wp--preset--color--foreground); + border: 1px solid var(--wp--preset--color--contrast); } .wp-block-table th { - font-weight: var(--wp--custom--font-weight--medium); + font-weight: var(--wp--custom--font-weight--regular); } .wp-block-table td, @@ -403,7 +192,7 @@ p.has-background { } .wp-block-table.is-style-stripes tbody tr:nth-child(odd) { - background-color: #eee; + background-color: var(--wp--preset--color--neutral); } /* Custom @@ -416,18 +205,24 @@ input, select, textarea, .wp-block-search__input { - background-color: var(--wp--preset--color--background); - border: 1px solid var(--wp--preset--color--foreground); + background-color: var(--wp--preset--color--base); + border: 1px solid var(--wp--preset--color--contrast); border-radius: 0; - color: var(--wp--preset--color--foreground); + color: var(--wp--preset--color--contrast); font-family: var(--wp--preset--font-family--primary); font-size: var(--wp--preset--font-size--medium); - font-weight: var(--wp--custom--font-weight--regular); + font-weight: var(--wp--custom--font-weight--light); line-height: var(--wp--custom--line-height--body); padding: 10px 20px; width: 100%; } +input:focus, +textarea:focus { + background-color: var(--wp--preset--color--neutral); + outline: none; +} + input[type="checkbox"], input[type="image"], input[type="radio"] { @@ -444,119 +239,37 @@ textarea { } ::placeholder { - color: var(--wp--preset--color--foreground); + color: var(--wp--preset--color--contrast); font-size: var(--wp--preset--font-size--small); - opacity: 0.6; -} - -.nf-field-container { - margin-bottom: 10px; -} - -/* Experimental Styles ---------------------------------------------- */ - -/* - * Remove bottom margin when blocks are placed in container blocks that do not - * support blockGap (i.e. Column, Cover, Media & Text) - */ -h1:last-child, -h2:last-child, -h3:last-child, -h4:last-child, -h5:last-child, -h6:last-child, -p:last-child, -.wp-block-image:last-child { - margin-bottom: 0; -} - -.is-root-container h1 + *, -.is-root-container h2 + *, -.is-root-container h3 + *, -.is-root-container h4 + *, -.is-root-container h5 + *, -.is-root-container h6 + *, -.wp-block-post-content h1 + *, -.wp-block-post-content h2 + *, -.wp-block-post-content h3 + *, -.wp-block-post-content h4 + *, -.wp-block-post-content h5 + *, -.wp-block-post-content h6 + *, -.wp-block-query-title + * { - margin-top: 10px !important; -} - -.wp-block-spacer + * { - margin-top: 0 !important; + opacity: 0.5; } /* Media Queries ---------------------------------------------------------------------------- */ -@media only screen and (min-width: 800px) { - - /* Navigation - --------------------------------------------- */ - - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline a, - .wp-block-navigation-item.is-style-outline-background a { - padding: 5px 15px; - } +@media only screen and (max-width: 780px) { - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-outline a:focus, - .wp-block-navigation-item.is-style-outline a:hover { - background-color: var(--wp--preset--color--foreground); - } - - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline-background a:focus, - .wp-block-navigation-item.is-style-outline-background a:hover { - background-color: var(--wp--preset--color--background); - } + /* Columns + --------------------------------------------- */ - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-outline a { - border: 1px solid var(--wp--preset--color--foreground); + .is-style-columns-reverse { + flex-direction: column-reverse; } - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline-background a { - border: 1px solid var(--wp--preset--color--background); - } +} - .wp-block-navigation-item.is-style-fill a:focus, - .wp-block-navigation-item.is-style-fill a:hover, - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline a, - .wp-block-navigation-item.is-style-outline-background a:focus, - .wp-block-navigation-item.is-style-outline-background a:hover { - color: var(--wp--preset--color--foreground); - } +@media only screen and (min-width: 800px) { - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-fill-background a:focus, - .wp-block-navigation-item.is-style-fill-background a:hover, - .wp-block-navigation-item.is-style-outline a:focus, - .wp-block-navigation-item.is-style-outline a:hover, - .wp-block-navigation-item.is-style-outline-background a { - color: var(--wp--preset--color--background); - } + /* Navigation Link + --------------------------------------------- */ - .wp-block-navigation-item.is-style-fill a:focus, - .wp-block-navigation-item.is-style-fill a:hover, - .wp-block-navigation-item.is-style-fill-background a:focus, - .wp-block-navigation-item.is-style-fill-background a:hover, - .wp-block-navigation-item.is-style-outline a, - .wp-block-navigation-item.is-style-outline-background a { - background-color: transparent; + .wp-block-navigation-item.is-style-outline a { + border: 1px solid currentColor; + padding: 8px 15px; } /* Pullquote - --------------------------------------------- */ + --------------------------------------------- */ .wp-block-pullquote.alignleft, .wp-block-pullquote.alignright { @@ -564,12 +277,10 @@ p:last-child, } .wp-block-pullquote.alignleft { - float: left; margin-right: 30px !important; } .wp-block-pullquote.alignright { - float: right; margin-left: 30px !important; } diff --git a/assets/scss/ash.scss b/assets/scss/ash.scss index 4fb23a95..976a1000 100644 --- a/assets/scss/ash.scss +++ b/assets/scss/ash.scss @@ -8,12 +8,6 @@ // 01. Dependencies @import - '../fonts/gilmer-bold.css', - '../fonts/gilmer-heavy.css', - '../fonts/gilmer-light.css', - '../fonts/gilmer-medium.css', - '../fonts/gilmer-outline.css', - '../fonts/gilmer-regular.css', 'config/variables' ; diff --git a/composer.json b/composer.json index d543974e..2961016a 100644 --- a/composer.json +++ b/composer.json @@ -1,16 +1,24 @@ { - "name": "linchpin/themes", + "name": "linchpin/ash", "type": "package", - "description": "A collection of experimental block-based WordPress themes by WP Engine.", - "homepage": "https://github.com/linchpin/themes", + "description": "An experimental block-based WordPress themes by WP Engine.", + "homepage": "https://github.com/linchpin/ash", "license": "GPL-2.0-or-later", "require": { - "php": ">=5.6" + "php": ">=7.4" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", - "wptrt/wpthemereview": "^0.2.1", - "php-parallel-lint/php-parallel-lint": "^1.3" + "automattic/phpcs-neutron-ruleset": "^3.4.0", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0.0", + "friendsofphp/php-cs-fixer": "^3.16.0", + "php-parallel-lint/php-console-highlighter": "v1.0.0", + "php-parallel-lint/php-parallel-lint": "^v1.3.2", + "phpcompatibility/php-compatibility": "^9.3.5", + "phpcompatibility/phpcompatibility-wp": "2.1.4", + "saggre/phpdocumentor-markdown": "^0.1.3", + "squizlabs/php_codesniffer": "^3.7.2", + "wp-coding-standards/wpcs": "^2.3.0", + "wptrt/wpthemereview": "^0.2.1" }, "scripts": { "lint": "@php ./vendor/bin/parallel-lint --exclude .git --exclude vendor .", diff --git a/composer.lock b/composer.lock index f20a5cd8..f24de83e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,371 +4,2881 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0a95872418a5e423ff2ed2d600f2778f", + "content-hash": "8d55370e172d3d1e994b9308f01bcfcb", "packages": [], "packages-dev": [ { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "name": "automattic/phpcs-neutron-ruleset", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/Automattic/phpcs-neutron-ruleset.git", + "reference": "0d79b6016a274d1bb8cbb359592e8dad7ffa47ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/Automattic/phpcs-neutron-ruleset/zipball/0d79b6016a274d1bb8cbb359592e8dad7ffa47ca", + "reference": "0d79b6016a274d1bb8cbb359592e8dad7ffa47ca", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + "automattic/phpcs-neutron-standard": "^1.5.3", + "php": "^7.0 || ^8.0", + "sirbrillig/phpcs-import-detection": "^1.1.4", + "sirbrillig/phpcs-variable-analysis": "^2.6.1", + "wp-coding-standards/wpcs": "^2.1.0" }, "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "squizlabs/php_codesniffer": "^3.4.2" }, + "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], + "description": "A PHPCS meta-ruleset for WordPress development", "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/Automattic/phpcs-neutron-ruleset/issues", + "source": "https://github.com/Automattic/phpcs-neutron-ruleset/tree/v3.4.0" }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2021-03-15T19:18:33+00:00" }, { - "name": "php-parallel-lint/php-parallel-lint", - "version": "v1.3.2", + "name": "automattic/phpcs-neutron-standard", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git", - "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de" + "url": "https://github.com/Automattic/phpcs-neutron-standard.git", + "reference": "566ad70534296073afa9143858671356444ddead" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6483c9832e71973ed29cf71bd6b3f4fde438a9de", - "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "url": "https://api.github.com/repos/Automattic/phpcs-neutron-standard/zipball/566ad70534296073afa9143858671356444ddead", + "reference": "566ad70534296073afa9143858671356444ddead", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=5.3.0" - }, - "replace": { - "grogy/php-parallel-lint": "*", - "jakub-onderka/php-parallel-lint": "*" + "php": "^7.0 || ^8.0", + "squizlabs/php_codesniffer": "^3.3.0" }, "require-dev": { - "nette/tester": "^1.3 || ^2.0", - "php-parallel-lint/php-console-highlighter": "0.* || ^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "suggest": { - "php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet" + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4 || ^0.5 || ^0.6 || ^0.7", + "phpunit/phpunit": "^5.0 || ^6.5 || ^7.0 || ^8.0", + "sirbrillig/phpcs-variable-analysis": "^2.0.1" }, - "bin": [ - "parallel-lint" - ], - "type": "library", + "type": "phpcodesniffer-standard", "autoload": { - "classmap": [ - "./src/" - ] + "psr-4": { + "NeutronStandard\\": "NeutronStandard/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Jakub Onderka", - "email": "ahoj@jakubonderka.cz" + "name": "Payton Swick", + "email": "payton@foolord.com" } ], - "description": "This tool check syntax of PHP files about 20x faster than serial check.", - "homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint", + "description": "A set of phpcs sniffs for modern php development.", "support": { - "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues", - "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/v1.3.2" + "issues": "https://github.com/sirbrillig/phpcs-neutron-standard/issues", + "source": "https://github.com/sirbrillig/phpcs-neutron-standard", + "wiki": "https://github.com/sirbrillig/phpcs-neutron-standard/wiki" }, - "time": "2022-02-21T12:50:22+00:00" + "time": "2021-02-15T22:42:03+00:00" }, { - "name": "phpcompatibility/php-compatibility", - "version": "9.3.5", + "name": "composer/pcre", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + "url": "https://github.com/composer/pcre.git", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" - }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } }, - "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-or-later" + "MIT" ], "authors": [ { - "name": "Wim Godden", - "homepage": "https://github.com/wimg", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "compatibility", - "phpcs", - "standards" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibility" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.0" }, - "time": "2019-12-27T09:44:58+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-11-17T09:50:14+00:00" }, { - "name": "phpcompatibility/phpcompatibility-paragonie", - "version": "1.3.2", + "name": "composer/semver", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26" + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { - "phpcompatibility/php-compatibility": "^9.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "paragonie/random_compat": "dev-master", - "paragonie/sodium_compat": "dev-master" + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } }, - "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-or-later" + "MIT" ], "authors": [ { - "name": "Wim Godden", - "role": "lead" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Juliette Reinders Folmer", - "role": "lead" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", - "homepage": "http://phpcompatibility.com/", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "compatibility", - "paragonie", - "phpcs", - "polyfill", - "standards", - "static analysis" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" }, - "time": "2022-10-25T01:46:02+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" }, { - "name": "phpcompatibility/phpcompatibility-wp", - "version": "2.1.4", + "name": "composer/xdebug-handler", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", - "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", - "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "phpcompatibility/php-compatibility": "^9.0", - "phpcompatibility/phpcompatibility-paragonie": "^1.0" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } }, - "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-or-later" + "MIT" ], "authors": [ { - "name": "Wim Godden", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "lead" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", - "homepage": "http://phpcompatibility.com/", + "description": "Restarts a process without Xdebug.", "keywords": [ - "compatibility", - "phpcs", - "standards", - "static analysis", - "wordpress" + "Xdebug", + "performance" ], "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, - "time": "2022-10-24T09:00:36+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.7.2", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, - "notification-url": "https://packagist.org/downloads/", + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, + { + "name": "doctrine/annotations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2 || ^3", + "ext-tokenizer": "*", + "php": "^7.2 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/2.0.1" + }, + "time": "2023-02-02T22:02:53+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + }, + "time": "2022-05-02T15:47:09+00:00" + }, + { + "name": "doctrine/lexer", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-12-14T08:49:07+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.16.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", + "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", + "shasum": "" + }, + "require": { + "composer/semver": "^3.3", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^2", + "doctrine/lexer": "^2 || ^3", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0 || ^5.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", + "symfony/polyfill-mbstring": "^1.27", + "symfony/polyfill-php80": "^1.27", + "symfony/polyfill-php81": "^1.27", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" + }, + "require-dev": { + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.0", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.5.3", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", + "phpspec/prophecy": "^1.16", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "phpunitgoodpractices/polyfill": "^1.6", + "phpunitgoodpractices/traits": "^1.9.2", + "symfony/phpunit-bridge": "^6.2.3", + "symfony/yaml": "^5.4 || ^6.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.16.0" }, - "time": "2023-02-22T23:07:41+00:00" + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2023-04-02T19:30:06+00:00" + }, + { + "name": "php-parallel-lint/php-console-color", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-parallel-lint/PHP-Console-Color.git", + "reference": "7adfefd530aa2d7570ba87100a99e2483a543b88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Color/zipball/7adfefd530aa2d7570ba87100a99e2483a543b88", + "reference": "7adfefd530aa2d7570ba87100a99e2483a543b88", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "replace": { + "jakub-onderka/php-console-color": "*" + }, + "require-dev": { + "php-parallel-lint/php-code-style": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.0", + "php-parallel-lint/php-var-dump-check": "0.*", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHP_Parallel_Lint\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "description": "Simple library for creating colored console ouput.", + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Console-Color/issues", + "source": "https://github.com/php-parallel-lint/PHP-Console-Color/tree/v1.0.1" + }, + "time": "2021-12-25T06:49:29+00:00" + }, + { + "name": "php-parallel-lint/php-console-highlighter", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-parallel-lint/PHP-Console-Highlighter.git", + "reference": "5b4803384d3303cf8e84141039ef56c8a123138d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Highlighter/zipball/5b4803384d3303cf8e84141039ef56c8a123138d", + "reference": "5b4803384d3303cf8e84141039ef56c8a123138d", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.2", + "php-parallel-lint/php-console-color": "^1.0.1" + }, + "replace": { + "jakub-onderka/php-console-highlighter": "*" + }, + "require-dev": { + "php-parallel-lint/php-code-style": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.0", + "php-parallel-lint/php-var-dump-check": "0.*", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHP_Parallel_Lint\\PhpConsoleHighlighter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "description": "Highlight PHP code in terminal", + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/issues", + "source": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/tree/v1.0.0" + }, + "time": "2022-02-18T08:23:19+00:00" + }, + { + "name": "php-parallel-lint/php-parallel-lint", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git", + "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.3.0" + }, + "replace": { + "grogy/php-parallel-lint": "*", + "jakub-onderka/php-parallel-lint": "*" + }, + "require-dev": { + "nette/tester": "^1.3 || ^2.0", + "php-parallel-lint/php-console-highlighter": "0.* || ^1.0", + "squizlabs/php_codesniffer": "^3.6" + }, + "suggest": { + "php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet" + }, + "bin": [ + "parallel-lint" + ], + "type": "library", + "autoload": { + "classmap": [ + "./src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "ahoj@jakubonderka.cz" + } + ], + "description": "This tool check syntax of PHP files about 20x faster than serial check.", + "homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint", + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues", + "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/v1.3.2" + }, + "time": "2022-02-21T12:50:22+00:00" + }, + { + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" + }, + "time": "2019-12-27T09:44:58+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-paragonie", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", + "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", + "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "paragonie/random_compat": "dev-master", + "paragonie/sodium_compat": "dev-master" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "paragonie", + "phpcs", + "polyfill", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" + }, + "time": "2022-10-25T01:46:02+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-wp", + "version": "2.1.4", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", + "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", + "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0", + "phpcompatibility/phpcompatibility-paragonie": "^1.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" + }, + "time": "2022-10-24T09:00:36+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "saggre/phpdocumentor-markdown", + "version": "0.1.3", + "source": { + "type": "git", + "url": "https://github.com/Saggre/phpDocumentor-markdown.git", + "reference": "35cf7221561ce75eba4301b770e329be45c6dba1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Saggre/phpDocumentor-markdown/zipball/35cf7221561ce75eba4301b770e329be45c6dba1", + "reference": "35cf7221561ce75eba4301b770e329be45c6dba1", + "shasum": "" + }, + "require-dev": { + "php": ">=7.4", + "phpunit/phpunit": "^9.5", + "twig/twig": "2.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpDocumentorMarkdown\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Saggre", + "email": "sakri.koskimies@hotmail.com" + } + ], + "description": "Markdown template for phpDocumentor3", + "keywords": [ + "documentation", + "github", + "gitlab", + "markdown", + "phpDocumentor", + "phpdoc" + ], + "support": { + "issues": "https://github.com/Saggre/phpDocumentor-markdown/issues", + "source": "https://github.com/Saggre/phpDocumentor-markdown/tree/0.1.3" + }, + "time": "2022-04-20T17:19:33+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sirbrillig/phpcs-import-detection", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/sirbrillig/phpcs-import-detection.git", + "reference": "7035ef6f3a15db182b59664d2c060918aa827e16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sirbrillig/phpcs-import-detection/zipball/7035ef6f3a15db182b59664d2c060918aa827e16", + "reference": "7035ef6f3a15db182b59664d2c060918aa827e16", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "squizlabs/php_codesniffer": "^3.5.8" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", + "phpunit/phpunit": "^9.0", + "sirbrillig/phpcs-variable-analysis": "^2.0.1" + }, + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "ImportDetection\\": "ImportDetection/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Payton Swick", + "email": "payton@foolord.com" + } + ], + "description": "A set of phpcs sniffs to look for unused or unimported symbols.", + "keywords": [ + "phpcs", + "static analysis" + ], + "support": { + "issues": "https://github.com/sirbrillig/phpcs-import-detection/issues", + "source": "https://github.com/sirbrillig/phpcs-import-detection/tree/v1.3.3" + }, + "time": "2022-10-30T19:04:13+00:00" + }, + { + "name": "sirbrillig/phpcs-variable-analysis", + "version": "v2.11.16", + "source": { + "type": "git", + "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", + "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/dc5582dc5a93a235557af73e523c389aac9a8e88", + "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "squizlabs/php_codesniffer": "^3.5.6" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", + "phpcsstandards/phpcsdevcs": "^1.1", + "phpstan/phpstan": "^1.7", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.5 || ^7.0 || ^8.0 || ^9.0", + "sirbrillig/phpcs-import-detection": "^1.1", + "vimeo/psalm": "^0.2 || ^0.3 || ^1.1 || ^4.24 || ^5.0@beta" + }, + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "VariableAnalysis\\": "VariableAnalysis/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Sam Graham", + "email": "php-codesniffer-variableanalysis@illusori.co.uk" + }, + { + "name": "Payton Swick", + "email": "payton@foolord.com" + } + ], + "description": "A PHPCS sniff to detect problems with variables.", + "keywords": [ + "phpcs", + "static analysis" + ], + "support": { + "issues": "https://github.com/sirbrillig/phpcs-variable-analysis/issues", + "source": "https://github.com/sirbrillig/phpcs-variable-analysis", + "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" + }, + "time": "2023-03-31T16:46:32+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.7.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2023-02-22T23:07:41+00:00" + }, + { + "name": "symfony/console", + "version": "v5.4.23", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/90f21e27d0d88ce38720556dd164d4a1e4c3934c", + "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.23" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-24T18:47:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.4.22", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.22" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-03-17T11:31:58+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.4.23", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.4.23" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-03-02T11:38:35+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-16T09:33:00+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.23", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "4b842fc4b61609e0a155a114082bd94e31e98287" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/4b842fc4b61609e0a155a114082bd94e31e98287", + "reference": "4b842fc4b61609e0a155a114082bd94e31e98287", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.23" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-18T13:50:24+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.22", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.22" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-03-14T06:11:53+00:00" }, { "name": "wp-coding-standards/wpcs", @@ -502,7 +3012,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.6" + "php": ">=7.4" }, "platform-dev": [], "plugin-api-version": "2.3.0" diff --git a/css/ash.css b/css/ash.css index 61e6aa89..9a4b4df1 100644 --- a/css/ash.css +++ b/css/ash.css @@ -1,932 +1 @@ -@charset "UTF-8"; -/** - * 01. Dependencies - * 02. Frost Base - * 03. Ash Base - */ -@import '../fonts/gilmer-bold.css'; -@import '../fonts/gilmer-heavy.css'; -@import '../fonts/gilmer-light.css'; -@import '../fonts/gilmer-medium.css'; -@import '../fonts/gilmer-outline.css'; -@import '../fonts/gilmer-regular.css'; -/** - * 01. Fonts - * 02. Colors - */ -/* Defaults ----------------------------------------------------------------------------- */ -html { - box-sizing: border-box; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -a, -button, -input:focus, -input[type=button], -input[type=submit], -textarea:focus, -.wp-block-button__link { - transition: all 0.2s ease-in-out; -} - -a, -a:not(.wp-element-button), -a:focus, -a:hover { - text-decoration: underline; - text-decoration-thickness: 1px; -} - -ol, -ul { - margin: 0; - padding: 0; -} - -b, -strong { - font-weight: var(--wp--custom--font-weight--medium); -} - -blockquote { - margin: 0; -} - -/* - * Alignment Styles - Originally from TT2. - * These rules are temporary, and should not - * be relied on or modified too heavily by - * themes or plugins that build on Frost. - * These are meant to be a precursor to a - * global solution provided by the Block Editor. - * - * Relevant issues: - * https://github.com/WordPress/gutenberg/issues/35607 - * https://github.com/WordPress/gutenberg/issues/35884 ----------------------------------------------*/ -body > .is-root-container, -.edit-post-visual-editor__post-title-wrapper, -.wp-block-cover.alignfull, -.wp-block-group.alignfull, -.wp-block-group.has-background, -.wp-site-blocks { - padding-left: var(--wp--custom--spacing--outer); - padding-right: var(--wp--custom--spacing--outer); -} - -.block-editor-block-list__layout.is-root-container > .alignfull, -.is-root-container > .wp-block-cover, -.is-root-container > .wp-block-group.has-background, -.is-root-container > .wp-block-template-part > .wp-block-cover, -.is-root-container > .wp-block-template-part > .wp-block-group.has-background, -.wp-site-blocks .alignfull, -.wp-site-blocks > .wp-block-cover, -.wp-site-blocks > .wp-block-group.has-background, -.wp-site-blocks > .wp-block-template-part > .wp-block-cover, -.wp-site-blocks > .wp-block-template-part > .wp-block-group.has-background { - margin-left: calc(-1 * var(--wp--custom--spacing--outer)) !important; - margin-right: calc(-1 * var(--wp--custom--spacing--outer)) !important; - width: unset; -} - -/* Blocks ----------------------------------------------------------------------------- */ -/* Button ---------------------------------------------- */ -/* Calendar ---------------------------------------------- */ -.wp-block-calendar table caption, -.wp-block-calendar table tbody { - color: var(--wp--preset--color--foreground); -} - -.wp-block-calendar table th { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); -} - -.wp-block-calendar tbody td, -.wp-block-calendar th { - border: 1px solid var(--wp--preset--color--foreground); - padding: 10px; -} - -/* Caption ---------------------------------------------- */ -.wp-block-embed figcaption, -.wp-block-gallery figcaption, -.wp-block-image figcaption, -.wp-block-table figcaption { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - margin-bottom: 0; - margin-top: 10px; - text-align: center; -} - -.wp-block-gallery figcaption { - margin-top: 0; -} - -/* Code ---------------------------------------------- */ -.wp-block-code, -.wp-block-code code { - border: none; -} - -.wp-block-code code { - overflow-wrap: normal; - overflow-x: scroll; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - white-space: pre !important; -} - -*:not(.wp-block-code) > code, -kbd { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); - font-size: var(--wp--preset--font-size--small); - padding: 5px 8px; - position: relative; - top: -1px; -} - -/* - * When inline code is selected, the Editor applies contextual styling. Since - * our code color is near white, we need to reset to the default text color. - */ -.rich-text:focus > code[data-rich-text-format-boundary], -.rich-text:focus > kbd[data-rich-text-format-boundary] { - color: currentColor; -} - -/* Comments ---------------------------------------------- */ -.wp-block-comment-template li { - margin-left: 0; -} - -.wp-block-post-comments-form input:not([type=submit]), -.wp-block-post-comments-form textarea { - border-color: var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form input[type=submit] { - border: 1px solid var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form .form-submit { - margin-bottom: 0; -} - -/* Group ---------------------------------------------- */ -.wp-block-group.is-style-full-height { - align-items: center; - display: grid; - min-height: 100vh; -} - -.wp-block-group.is-style-shadow { - box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); -} - -.wp-block-group.is-style-shadow-solid { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -/* Image ---------------------------------------------- */ -.wp-block-image.aligncenter { - margin-left: auto !important; - margin-right: auto !important; -} - -.wp-block-image.alignleft { - margin-right: 30px !important; -} - -.wp-block-image.alignright { - margin-left: 30px !important; -} - -.wp-block-image.is-style-shadow { - box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); -} - -/* List ---------------------------------------------- */ -ol li:where(:not([class*=block])), -ol li:where(.wp-block-list), -ul li:where(:not([class*=block])), -ul li:where(.wp-block-list) { - margin-left: 30px; -} - -.is-style-no-disc li { - list-style-type: none; - margin-left: 0; -} - -/* Media & Text ---------------------------------------------- */ -.wp-block-media-text.is-style-shadow-media img { - box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); -} - -/* Navigation ---------------------------------------------- */ -.wp-block-navigation__responsive-container.is-menu-open { - padding: 30px var(--wp--custom--spacing--outer); -} - -.wp-block-navigation__responsive-container-close, -.wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--foreground); - padding: 2px; -} - -.has-background .wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--background); -} - -.has-background .wp-block-navigation__responsive-container-open:focus, -.has-background .wp-block-navigation__responsive-container-open:hover { - color: var(--wp--preset--color--background); -} - -.wp-block-navigation:not([style*=text-decoration]) a, -.wp-block-navigation:not([style*=text-decoration]) a:focus, -.wp-block-navigation:not([style*=text-decoration]) a:hover { - text-decoration: none; -} - -/* Navigation Submenu ---------------------------------------------- */ -.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container { - background-color: var(--wp--preset--color--foreground); - border: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); - padding: 10px; -} - -.wp-block-navigation :where(.wp-block-navigation__submenu-container) a { - padding: 2px 10px; -} - -/* Paragraph ---------------------------------------------- */ -p.has-background { - padding: 20px 30px; -} - -/* Preformatted ---------------------------------------------- */ -.wp-block-preformatted { - overflow-wrap: normal; - overflow-x: scroll; - white-space: pre; -} - -/* Pullquote ---------------------------------------------- */ -.wp-block-pullquote p, -.wp-block-pullquote.alignleft p, -.wp-block-pullquote.alignright p { - font-size: var(--wp--preset--font-size--large); - line-height: var(--wp--custom--line-height--medium); - margin-bottom: 0; -} - -.wp-block-pullquote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-transform: inherit; -} - -/* Quote ---------------------------------------------- */ -.wp-block-quote { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -.wp-block-quote p:last-of-type { - margin-bottom: 0; -} - -.wp-block-quote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-align: inherit; -} - -/* Separator ---------------------------------------------- */ -.wp-block-separator, -.wp-block-separator.has-css-opacity { - opacity: 1; -} - -.wp-block-separator:not(.is-style-dots), -.wp-block-separator.has-background:not(.is-style-dots) { - border-bottom: 1px solid currentColor; - height: 1px; -} - -.wp-block-separator.is-style-dots:before { - font-family: inherit; - font-size: var(--wp--preset--font-size--large); - letter-spacing: 10px; - padding-left: 10px; -} - -/* Site Title ---------------------------------------------- */ -.wp-block-site-title a { - text-decoration: none; -} - -/* Table ---------------------------------------------- */ -.wp-block-table.is-style-stripes { - border-bottom: none; -} - -.wp-block-table table { - border-collapse: collapse; -} - -.wp-block-table thead { - border-bottom: 3px solid var(--wp--preset--color--foreground); -} - -.wp-block-table tfoot { - border-top: 3px solid var(--wp--preset--color--foreground); -} - -.wp-block-table td, -.wp-block-table th, -.wp-block-table tr, -.wp-block-table.is-style-stripes td, -.wp-block-table.is-style-stripes th, -.wp-block-table.is-style-stripes tr { - border: 1px solid var(--wp--preset--color--foreground); -} - -.wp-block-table th { - font-weight: var(--wp--custom--font-weight--medium); -} - -.wp-block-table td, -.wp-block-table th { - padding: 5px; -} - -.wp-block-table.is-style-stripes tbody tr:nth-child(odd) { - background-color: #eee; -} - -/* Custom ----------------------------------------------------------------------------- */ -/* Forms ---------------------------------------------- */ -input, -select, -textarea, -.wp-block-search__input { - background-color: var(--wp--preset--color--background); - border: 1px solid var(--wp--preset--color--foreground); - border-radius: 0; - color: var(--wp--preset--color--foreground); - font-family: var(--wp--preset--font-family--primary); - font-size: var(--wp--preset--font-size--medium); - font-weight: var(--wp--custom--font-weight--regular); - line-height: var(--wp--custom--line-height--body); - padding: 10px 20px; - width: 100%; -} - -input[type=checkbox], -input[type=image], -input[type=radio] { - width: auto; -} - -input[type=button], -input[type=email], -input[type=search], -input[type=submit], -input[type=text], -textarea { - -webkit-appearance: none; -} - -::-moz-placeholder { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - opacity: 0.6; -} - -::placeholder { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - opacity: 0.6; -} - -.nf-field-container { - margin-bottom: 10px; -} - -/* Experimental Styles ---------------------------------------------- */ -/* - * Remove bottom margin when blocks are placed in container blocks that do not - * support blockGap (i.e. Column, Cover, Media & Text) - */ -h1:last-child, -h2:last-child, -h3:last-child, -h4:last-child, -h5:last-child, -h6:last-child, -p:last-child, -.wp-block-image:last-child { - margin-bottom: 0; -} - -.is-root-container h1 + *, -.is-root-container h2 + *, -.is-root-container h3 + *, -.is-root-container h4 + *, -.is-root-container h5 + *, -.is-root-container h6 + *, -.wp-block-post-content h1 + *, -.wp-block-post-content h2 + *, -.wp-block-post-content h3 + *, -.wp-block-post-content h4 + *, -.wp-block-post-content h5 + *, -.wp-block-post-content h6 + *, -.wp-block-query-title + * { - margin-top: 10px !important; -} - -.wp-block-spacer + * { - margin-top: 0 !important; -} - -/* Media Queries ----------------------------------------------------------------------------- */ -@media only screen and (min-width: 800px) { - /* Navigation - --------------------------------------------- */ - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline a, -.wp-block-navigation-item.is-style-outline-background a { - padding: 5px 15px; - } - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-outline a:focus, -.wp-block-navigation-item.is-style-outline a:hover { - background-color: var(--wp--preset--color--foreground); - } - .wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline-background a:focus, -.wp-block-navigation-item.is-style-outline-background a:hover { - background-color: var(--wp--preset--color--background); - } - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-outline a { - border: 1px solid var(--wp--preset--color--foreground); - } - .wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline-background a { - border: 1px solid var(--wp--preset--color--background); - } - .wp-block-navigation-item.is-style-fill a:focus, -.wp-block-navigation-item.is-style-fill a:hover, -.wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline a, -.wp-block-navigation-item.is-style-outline-background a:focus, -.wp-block-navigation-item.is-style-outline-background a:hover { - color: var(--wp--preset--color--foreground); - } - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-fill-background a:focus, -.wp-block-navigation-item.is-style-fill-background a:hover, -.wp-block-navigation-item.is-style-outline a:focus, -.wp-block-navigation-item.is-style-outline a:hover, -.wp-block-navigation-item.is-style-outline-background a { - color: var(--wp--preset--color--background); - } - .wp-block-navigation-item.is-style-fill a:focus, -.wp-block-navigation-item.is-style-fill a:hover, -.wp-block-navigation-item.is-style-fill-background a:focus, -.wp-block-navigation-item.is-style-fill-background a:hover, -.wp-block-navigation-item.is-style-outline a, -.wp-block-navigation-item.is-style-outline-background a { - background-color: transparent; - } - /* Pullquote - --------------------------------------------- */ - .wp-block-pullquote.alignleft, -.wp-block-pullquote.alignright { - max-width: 300px; - } - .wp-block-pullquote.alignleft { - float: left; - margin-right: 30px !important; - } - .wp-block-pullquote.alignright { - float: right; - margin-left: 30px !important; - } -} -.wp-block-post-title { - max-width: clamp(80%, 90vh, 100%); -} - -.has-eyebrow-font-size { - font-family: Gilmer-Heavy, sans-serif; - line-height: 16px; -} - -ul.has-eyebrow-font-size { - line-height: 1.25em; -} -ul.has-eyebrow-font-size li + li { - margin-top: 0.375rem; -} - -.has-large-font-size { - line-height: 28px; -} - -.wp-block-post-terms [rel=tag] { - font-family: Gilmer-Regular, sans-serif; - font-size: 14px; - letter-spacing: 0.35px; - line-height: 1; - text-decoration: none; - white-space: nowrap; -} -.wp-block-post-terms.taxonomy-lp_solution [rel=tag] { - background: #fff; - border-radius: 5px; - margin-right: 12px; - padding: 5px 9px; -} -.wp-block-post-terms.taxonomy-lp_solution .wp-block-post-terms__separator { - display: none; -} - -.wp-block-button .wp-block-button__link { - font-size: 14px; - line-height: 16px; - letter-spacing: 1.05px; - text-transform: uppercase; - padding: 1.375rem 1.5rem; -} -.wp-block-button .wp-block-button__link:hover { - text-decoration: none; -} -.wp-block-button.is-style-fill .wp-block-button__link { - background: #3fc1d0; - border: 2px solid #3fc1d0; - color: #fff; -} -.wp-block-button.is-style-fill .wp-block-button__link:hover { - background: #fff; - border-color: #fff; - color: #3fc1d0; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color) { - background: var(--wp--preset--color--base); - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color):hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color { - border-color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-base-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-main-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-primary-color:hover { - background: var(--wp--preset--color--primary) !important; - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color) { - background: var(--wp--preset--color--main); - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color):hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color { - border-color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-base-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-main-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-primary-color:hover { - background: var(--wp--preset--color--primary) !important; - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color) { - background: var(--wp--preset--color--primary); - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color):hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--primary); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color { - border-color: var(--wp--preset--color--primary); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-base-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-main-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-primary-color:hover { - background: var(--wp--preset--color--primary) !important; - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-outline .wp-block-button__link:hover { - background: #fff; - border-color: #fff; -} -.wp-block-button.is-style-outline .wp-block-button__link.has-base-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-outline .wp-block-button__link.has-main-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-outline .wp-block-button__link.has-primary-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); -} - -@media screen and (min-width: 1024px) { - .wp-block-group.flex-auto { - flex: 1 1 auto; - } - .wp-block-group.flex-sidebar { - flex: 0 0 400px; - } -} -@media screen and (max-width: 1023px) { - .wp-block-group.medium-flex-wrap { - flex-wrap: wrap !important; - } - .wp-block-group.medium-flex-wrap.flex-sidebar { - flex: 0 0 100%; - } -} - -/** - * 01. Layout - * 02. Dashboard Navigation - */ -.single-proposal .wp-site-blocks { - min-height: 100vh; - padding-left: 0; -} -.single-proposal .wp-site-blocks .site-content { - min-height: 100vh; - padding-top: 0 !important; - padding-bottom: 0 !important; -} -.single-proposal .wp-site-blocks .site-footer { - margin: 0; -} -.single-proposal .site-content > .wp-block-page-list { - background: #fafafa; - min-height: 100vh; - width: 300px; - overflow: scroll; - padding: 1rem 0; - list-style: none; - position: -webkit-sticky; - position: sticky; - top: 0; -} -.single-proposal .site-content > .wp-block-page-list .wp-block-pages-list__item__link { - display: block; - padding: 0.5rem 1rem; -} - -/** - * 01. Headings - * 02. Weights - * 03. Paragraph - * 04. Link - */ -h1, h2, h3, h4, h5, h6 { - font-weight: 400; -} - -h1, h2, h3, h5 { - font-family: Gilmer-Heavy, sans-serif; -} - -h1.wp-block-post-title { - font-size: clamp(50px, 8vw, 90px); -} - -h1 { - font-size: clamp(50px, 8vw, 90px); - line-height: 1.125em; -} - -h2 { - font-size: clamp(36px, 7vw, 48px); - line-height: 1.2em; -} - -h3 { - font-size: clamp(30px, 6vw, 40px); - line-height: 1.2em; -} - -h4 { - font-size: clamp(24px, 5vw, 32px); - line-height: 1.3125em; -} - -h5 { - font-size: clamp(20px, 4vw, 24px); - line-height: 1.4em; -} - -h6 { - font-size: 16px; - line-height: 1.375em; -} - -.font-weight-light { - font-family: Gilmer-Light, sans-serif; -} - -.font-weight-regular { - font-family: Gilmer-Regular, sans-serif; -} - -.font-weight-medium { - font-family: Gilmer-Medium, sans-serif; -} - -.font-weight-bold { - font-family: Gilmer-Bold, sans-serif; -} - -.font-weight-heavy { - font-family: Gilmer-Heavy, sans-serif; -} - -strong { - font-family: Gilmer-Bold, sans-serif; - font-weight: 400; -} - -.heavy { - font-family: Gilmer-Heavy, sans-serif; -} - -p { - font-family: Gilmer-Regular, sans-serif; - font-size: 16px; - line-height: 24px; -} -p.small, -p small { - font-size: 14px; - line-height: 18px; -} -p.cta { - font-family: Gilmer-Heavy, sans-serif; - font-size: 14px; - line-height: 28px; -} - -.entry-content a { - color: #3fc1d0; - font-family: Gilmer-Heavy, sans-serif; - font-size: 18px; - line-height: 28px; -} - -.post-type-proposal-page h1.block-editor-block-list__block.editor-post-title.editor-post-title__input.rich-text.wp-block.wp-block-post-title { - font-size: 24px !important; - text-align: left; - width: 100%; -} - -.post-type-proposal-page #editor div.edit-post-visual-editor__post-title-wrapper > h1.block-editor-block-list__block { - font-size: 24px !important; - text-align: left; - width: 100%; -} - -.cd-accordion { - list-style: none; - width: 300px; -} -.cd-accordion__item { - margin: 0; -} -.cd-accordion__item a, -.cd-accordion__item .cd-accordion__label { - display: block; - padding: 0.25rem 1rem; - color: #001e1e; - font-family: Gilmer-Light, sans-serif; - font-size: 0.8rem; - letter-spacing: 0.05rem; - text-decoration: none; - position: relative; -} -.cd-accordion__item .cd-accordion__label { - padding-right: 1.5rem; -} -.cd-accordion__item--has-children .cd-accordion__label:after { - content: "▾"; - display: inline-block; - margin: 0 0.5rem 0 0; - position: absolute; - right: 0; - top: 0; - transform: translateY(0.25rem); -} -.cd-accordion__item--has-children .children { - display: none; - list-style: none; - margin: 0 0 2rem; - padding: 0 0 0 0.25rem; -} -.cd-accordion__item--has-children .cd-accordion__input { - display: none; -} -.cd-accordion__item--has-children .cd-accordion__input:checked ~ .cd-accordion__label:after { - transform: translateY(0.25rem) rotate(180deg); -} -.cd-accordion__item--has-children .cd-accordion__input:checked ~ .children { - display: block; -} -.cd-accordion__item.active > a, -.cd-accordion__item.active > .cd-accordion__label, .cd-accordion__item:hover > a, -.cd-accordion__item:hover > .cd-accordion__label { - background: rgba(63, 193, 208, 0.1); - color: #3fc1d0; -} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzaC5jc3MiLCJhc2guc2NzcyIsImNvbmZpZy9fdmFyaWFibGVzLnNjc3MiLCJfZnJvc3Quc2NzcyIsImJsb2Nrcy9fdHlwb2dyYXBoeS5zY3NzIiwiYmxvY2tzL19wb3N0LXRlcm1zLnNjc3MiLCJibG9ja3MvX2J1dHRvbi5zY3NzIiwiYmxvY2tzL19ncm91cC5zY3NzIiwicGFnZXMvX3Byb3Bvc2FsLnNjc3MiLCJjb21wb25lbnRzL190eXBvZ3JhcGh5LnNjc3MiLCJjb21wb25lbnRzL19lZGl0b3Iuc2NzcyIsImNvbXBvbmVudHMvX2NkLWFjY29yZGlvbi5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQ0FoQjs7OztFQUFBO0FBVUMsa0NBQUE7QUFDQSxtQ0FBQTtBQUNBLG1DQUFBO0FBQ0Esb0NBQUE7QUFDQSxxQ0FBQTtBQUNBLHFDQUFBO0FDZkQ7OztFQUFBO0FDQUE7OEVBQUE7QUFHQTtFQUNJLHNCQUFBO0VBQ0Esa0NBQUE7RUFDQSxtQ0FBQTtBSGdCSjs7QUdiQTs7O0VBR0ksbUJBQUE7QUhnQko7O0FHYkE7Ozs7Ozs7RUFPSSxnQ0FBQTtBSGdCSjs7QUdiQTs7OztFQUlJLDBCQUFBO0VBQ0EsOEJBQUE7QUhnQko7O0FHYkE7O0VBRUksU0FBQTtFQUNBLFVBQUE7QUhnQko7O0FHYkE7O0VBRUksbURBQUE7QUhnQko7O0FHYkE7RUFDSSxTQUFBO0FIZ0JKOztBR2JBOzs7Ozs7Ozs7Ozs4Q0FBQTtBQWFBOzs7Ozs7RUFNSSwrQ0FBQTtFQUNBLGdEQUFBO0FIZUo7O0FHWkE7Ozs7Ozs7Ozs7RUFVSSxvRUFBQTtFQUNBLHFFQUFBO0VBQ0EsWUFBQTtBSGVKOztBR1pBOzhFQUFBO0FBR0E7K0NBQUE7QUFJQTsrQ0FBQTtBQUdBOztFQUVJLDJDQUFBO0FIV0o7O0FHUkE7RUFDSSxzREFBQTtFQUNBLDJDQUFBO0FIV0o7O0FHUkE7O0VBRUksc0RBQUE7RUFDQSxhQUFBO0FIV0o7O0FHUkE7K0NBQUE7QUFHQTs7OztFQUlJLDJDQUFBO0VBQ0EsOENBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7QUhVSjs7QUdQQTtFQUNJLGFBQUE7QUhVSjs7QUdQQTsrQ0FBQTtBQUdBOztFQUVJLFlBQUE7QUhTSjs7QUdOQTtFQUNJLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtJQUFBLGNBQUE7T0FBQSxXQUFBO0VBQ0EsMkJBQUE7QUhTSjs7QUdOQTs7RUFFSSxzREFBQTtFQUNBLDJDQUFBO0VBQ0EsOENBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtBSFNKOztBR05BOzs7RUFBQTtBQUlBOztFQUVJLG1CQUFBO0FIU0o7O0FHTkE7K0NBQUE7QUFHQTtFQUNJLGNBQUE7QUhRSjs7QUdMQTs7RUFFSSxrREFBQTtBSFFKOztBR0xBO0VBQ0ksc0RBQUE7QUhRSjs7QUdMQTtFQUNJLGdCQUFBO0FIUUo7O0FHTEE7K0NBQUE7QUFHQTtFQUNJLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLGlCQUFBO0FIT0o7O0FHSkE7RUFDSSx1Q0FBQTtBSE9KOztBR0pBO0VBQ0ksd0RBQUE7QUhPSjs7QUdKQTsrQ0FBQTtBQUdBO0VBQ0ksNEJBQUE7RUFDQSw2QkFBQTtBSE1KOztBR0hBO0VBQ0ksNkJBQUE7QUhNSjs7QUdIQTtFQUNJLDRCQUFBO0FITUo7O0FHSEE7RUFDSSx1Q0FBQTtBSE1KOztBR0hBOytDQUFBO0FBR0E7Ozs7RUFJSSxpQkFBQTtBSEtKOztBR0ZBO0VBQ0kscUJBQUE7RUFDQSxjQUFBO0FIS0o7O0FHRkE7K0NBQUE7QUFHQTtFQUNJLHVDQUFBO0FISUo7O0FHREE7K0NBQUE7QUFHQTtFQUNJLCtDQUFBO0FIR0o7O0FHQUE7O0VBRUksc0RBQUE7RUFDQSxZQUFBO0FIR0o7O0FHQUE7RUFDSSxzREFBQTtBSEdKOztBR0FBOztFQUVJLDJDQUFBO0FIR0o7O0FHQUE7OztFQUdJLHFCQUFBO0FIR0o7O0FHQUE7K0NBQUE7QUFHQTtFQUNJLHNEQUFBO0VBQ0EsNENBQUE7RUFDQSwyQ0FBQTtFQUNBLGFBQUE7QUhFSjs7QUdDQTtFQUNJLGlCQUFBO0FIRUo7O0FHQ0E7K0NBQUE7QUFHQTtFQUNJLGtCQUFBO0FIQ0o7O0FHRUE7K0NBQUE7QUFHQTtFQUNJLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtBSEFKOztBR0dBOytDQUFBO0FBR0E7OztFQUdJLDhDQUFBO0VBQ0EsbURBQUE7RUFDQSxnQkFBQTtBSERKOztBR0lBO0VBQ0ksY0FBQTtFQUNBLDhDQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FIREo7O0FHSUE7K0NBQUE7QUFHQTtFQUNJLHdEQUFBO0FIRko7O0FHS0E7RUFDSSxnQkFBQTtBSEZKOztBR0tBO0VBQ0ksY0FBQTtFQUNBLDhDQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0FIRko7O0FHS0E7K0NBQUE7QUFHQTs7RUFFSSxVQUFBO0FISEo7O0FHTUE7O0VBRUkscUNBQUE7RUFDQSxXQUFBO0FISEo7O0FHTUE7RUFDSSxvQkFBQTtFQUNBLDhDQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtBSEhKOztBR01BOytDQUFBO0FBR0E7RUFDSSxxQkFBQTtBSEpKOztBR09BOytDQUFBO0FBR0E7RUFDSSxtQkFBQTtBSExKOztBR1FBO0VBQ0kseUJBQUE7QUhMSjs7QUdRQTtFQUNJLDZEQUFBO0FITEo7O0FHUUE7RUFDSSwwREFBQTtBSExKOztBR1FBOzs7Ozs7RUFNSSxzREFBQTtBSExKOztBR1FBO0VBQ0ksbURBQUE7QUhMSjs7QUdRQTs7RUFFSSxZQUFBO0FITEo7O0FHUUE7RUFDSSxzQkFBQTtBSExKOztBR1FBOzhFQUFBO0FBR0E7K0NBQUE7QUFHQTs7OztFQUlJLHNEQUFBO0VBQ0Esc0RBQUE7RUFDQSxnQkFBQTtFQUNBLDJDQUFBO0VBQ0Esb0RBQUE7RUFDQSwrQ0FBQTtFQUNBLG9EQUFBO0VBQ0EsaURBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7QUhQSjs7QUdVQTs7O0VBR0ksV0FBQTtBSFBKOztBR1VBOzs7Ozs7RUFNSSx3QkFBQTtBSFBKOztBR1VBO0VBQ0ksMkNBQUE7RUFDQSw4Q0FBQTtFQUNBLFlBQUE7QUhQSjs7QUdJQTtFQUNJLDJDQUFBO0VBQ0EsOENBQUE7RUFDQSxZQUFBO0FIUEo7O0FHVUE7RUFDSSxtQkFBQTtBSFBKOztBR1VBOytDQUFBO0FBR0E7OztFQUFBO0FBSUE7Ozs7Ozs7O0VBUUksZ0JBQUE7QUhSSjs7QUdXQTs7Ozs7Ozs7Ozs7OztFQWFJLDJCQUFBO0FIUko7O0FHV0E7RUFDSSx3QkFBQTtBSFJKOztBR1dBOzhFQUFBO0FBR0E7RUFFSTtpREFBQTtFQUdBOzs7O0lBSUksaUJBQUE7RUhYTjtFR2NFOzs7SUFHSSxzREFBQTtFSFpOO0VHZUU7OztJQUdJLHNEQUFBO0VIYk47RUdnQkU7O0lBRUksc0RBQUE7RUhkTjtFR2lCRTs7SUFFSSxzREFBQTtFSGZOO0VHa0JFOzs7Ozs7SUFNSSwyQ0FBQTtFSGhCTjtFR21CRTs7Ozs7O0lBTUksMkNBQUE7RUhqQk47RUdvQkU7Ozs7OztJQU1JLDZCQUFBO0VIbEJOO0VHcUJFO2lEQUFBO0VBR0E7O0lBRUksZ0JBQUE7RUhwQk47RUd1QkU7SUFDSSxXQUFBO0lBQ0EsNkJBQUE7RUhyQk47RUd3QkU7SUFDSSxZQUFBO0lBQ0EsNEJBQUE7RUh0Qk47QUFDRjtBSXZpQkE7RUFDQyxpQ0FBQTtBSnlpQkQ7O0FJdGlCQTtFQUNDLHFDRk9jO0VFTmQsaUJBQUE7QUp5aUJEOztBSXRpQkE7RUFDQyxtQkFBQTtBSnlpQkQ7QUl0aUJFO0VBQ0Msb0JBQUE7QUp3aUJIOztBSW5pQkE7RUFDQyxpQkFBQTtBSnNpQkQ7O0FLempCQztFQUVFLHVDSE1jO0VHTGQsZUFBQTtFQUVELHNCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsbUJBQUE7QUwwakJGO0FLdGpCRTtFQUNDLGdCSDhDSztFRzdDTCxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7QUx3akJIO0FLcmpCRTtFQUNDLGFBQUE7QUx1akJIOztBTW5rQkM7RUFDQyxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQUNBLHlCQUFBO0VBQ0Esd0JBQUE7QU5za0JGO0FNcGtCRTtFQUNDLHFCQUFBO0FOc2tCSDtBTWhrQkU7RUFDQyxtQkowQkk7RUl6QkoseUJBQUE7RUFDQSxXSmtDSztBRmdpQlI7QU1oa0JHO0VBQ0MsZ0JKK0JJO0VJOUJKLGtCSjhCSTtFSTdCSixjSm1CRztBRitpQlA7QU16akJJO0VBQ0MsMENBSk07RUFLTiw0Q0FMTTtFQU1OLHFDQUxNO0FOZ2tCWDtBTXpqQks7RUFDQyxxREFBQTtFQUNBLDRDQVRLO0VBVUwscUNBWEs7QU5za0JYO0FNdmpCSTtFQUNDLDRDQWhCTTtBTnlrQlg7QU1qakJPO0VBQ0MscURBQUE7RUFDQSw0Q0FOTTtFQU9OLGdEQUFBO0FObWpCUjtBTXRqQk87RUFDQyxxREFBQTtFQUNBLDRDQU5NO0VBT04sZ0RBQUE7QU53akJSO0FNM2pCTztFQUNDLHdEQUFBO0VBQ0EsK0NBTk07RUFPTixnREFBQTtBTjZqQlI7QU1ybEJJO0VBQ0MsMENBSk07RUFLTiw0Q0FMTTtFQU1OLHFDQUxNO0FONGxCWDtBTXJsQks7RUFDQyxxREFBQTtFQUNBLDRDQVRLO0VBVUwscUNBWEs7QU5rbUJYO0FNbmxCSTtFQUNDLDRDQWhCTTtBTnFtQlg7QU03a0JPO0VBQ0MscURBQUE7RUFDQSw0Q0FOTTtFQU9OLGdEQUFBO0FOK2tCUjtBTWxsQk87RUFDQyxxREFBQTtFQUNBLDRDQU5NO0VBT04sZ0RBQUE7QU5vbEJSO0FNdmxCTztFQUNDLHdEQUFBO0VBQ0EsK0NBTk07RUFPTixnREFBQTtBTnlsQlI7QU1qbkJJO0VBQ0MsNkNBSk07RUFLTiwrQ0FMTTtFQU1OLHFDQUxNO0FOd25CWDtBTWpuQks7RUFDQyxxREFBQTtFQUNBLDRDQVRLO0VBVUwsd0NBWEs7QU44bkJYO0FNL21CSTtFQUNDLCtDQWhCTTtBTmlvQlg7QU16bUJPO0VBQ0MscURBQUE7RUFDQSw0Q0FOTTtFQU9OLGdEQUFBO0FOMm1CUjtBTTltQk87RUFDQyxxREFBQTtFQUNBLDRDQU5NO0VBT04sZ0RBQUE7QU5nbkJSO0FNbm5CTztFQUNDLHdEQUFBO0VBQ0EsK0NBTk07RUFPTixnREFBQTtBTnFuQlI7QU16bUJHO0VBQ0MsZ0JKakJJO0VJa0JKLGtCSmxCSTtBRjZuQlI7QU1ubUJLO0VBQ0MscURBQUE7RUFDQSw0Q0FKWTtBTnltQmxCO0FNdm1CSztFQUNDLHFEQUFBO0VBQ0EsNENBSlk7QU42bUJsQjtBTTNtQks7RUFDQyxxREFBQTtFQUNBLDRDQUpZO0FOaW5CbEI7O0FPcHNCQztFQUNDO0lBQ0MsY0FBQTtFUHVzQkQ7RU9wc0JBO0lBQ0MsZUFBQTtFUHNzQkQ7QUFDRjtBT25zQkM7RUFDQztJQUNDLDBCQUFBO0VQcXNCRDtFT25zQkM7SUFDQyxjQUFBO0VQcXNCRjtBQUNGOztBUXR0QkE7OztFQUFBO0FBT0M7RUFDQyxpQkFBQTtFQUNBLGVBQUE7QVJzdEJGO0FRcHRCRTtFQUNDLGlCQUFBO0VBRUMseUJBQUE7RUFDQSw0QkFBQTtBUnF0Qko7QVFqdEJFO0VBQ0MsU0FBQTtBUm10Qkg7QVEzc0JFO0VBQ0MsbUJOOEJVO0VNN0JWLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBRUEsd0JBQUE7RUFBQSxnQkFBQTtFQUNBLE1BQUE7QVI0c0JIO0FRenNCSTtFQUNDLGNBQUE7RUFDQSxvQkFBQTtBUjJzQkw7O0FTcnZCQTs7Ozs7RUFBQTtBQVVBO0VBQ0MsZ0JBQUE7QVRvdkJEOztBU2p2QkE7RUFDQyxxQ1BIYztBRnV2QmY7O0FTanZCQTtFQUNDLGlDQUFBO0FUb3ZCRDs7QVNodkJDO0VBQ0MsaUNQRGlCO0VPRWpCLG9CQUFBO0FUbXZCRjs7QVNydkJDO0VBQ0MsaUNQRGlCO0VPRWpCLGtCQUFBO0FUd3ZCRjs7QVMxdkJDO0VBQ0MsaUNQRGlCO0VPRWpCLGtCQUFBO0FUNnZCRjs7QVMvdkJDO0VBQ0MsaUNQRGlCO0VPRWpCLHFCQUFBO0FUa3dCRjs7QVNwd0JDO0VBQ0MsaUNQRGlCO0VPRWpCLGtCQUFBO0FUdXdCRjs7QVN6d0JDO0VBQ0MsZVBEaUI7RU9FakIsb0JBQUE7QVQ0d0JGOztBU3B3QkM7RUFDQyxxQ1BuQmdCO0FGMHhCbEI7O0FTeHdCQztFQUNDLHVDUG5CZ0I7QUY4eEJsQjs7QVM1d0JDO0VBQ0Msc0NQbkJnQjtBRmt5QmxCOztBU2h4QkM7RUFDQyxvQ1BuQmdCO0FGc3lCbEI7O0FTcHhCQztFQUNDLHFDUG5CZ0I7QUYweUJsQjs7QVNueEJBO0VBRUUsb0NQN0JZO0VPOEJaLGdCQUFBO0FUcXhCRjs7QVNqeEJBO0VBQ0MscUNQbENjO0FGc3pCZjs7QVM5d0JBO0VBRUUsdUNQN0NlO0VPOENmLGVBQUE7RUFFRCxpQkFBQTtBVCt3QkQ7QVM3d0JDOztFQUVDLGVBQUE7RUFDQSxpQkFBQTtBVCt3QkY7QVM1d0JDO0VBRUUscUNQdkRZO0VPd0RaLGVBQUE7RUFFRCxpQkFBQTtBVDR3QkY7O0FTcndCQTtFQUNDLGNQNUJNO0VPOEJMLHFDUHBFYTtFT3FFYixlQUFBO0VBRUQsaUJBQUE7QVRzd0JEOztBVXoxQkE7RUFDRSwwQkFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtBVjQxQkY7O0FVejFCQTtFQUNFLDBCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBO0FWNDFCRjs7QVdwMkJBO0VBQ0MsZ0JBQUE7RUFDQSxZQUFBO0FYdTJCRDtBV3IyQkM7RUFDQyxTQUFBO0FYdTJCRjtBV3IyQkU7O0VBRUMsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsY1Q0Q0s7RVMxQ0gscUNUTlU7RVNPVixpQkFBQTtFQUVBLHVCQUFBO0VBQ0YscUJBQUE7RUFFQSxrQkFBQTtBWG8yQkg7QVdqMkJFO0VBQ0MscUJBQUE7QVhtMkJIO0FXOTFCSTtFQUNDLFlBQUE7RUFFQSxxQkFBQTtFQUNBLG9CQUFBO0VBRUEsa0JBQUE7RUFDQSxRQUFBO0VBQ0EsTUFBQTtFQUNBLDhCQUFBO0FYODFCTDtBVzExQkc7RUFDQyxhQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLHNCQUFBO0FYNDFCSjtBV3oxQkc7RUFDQyxhQUFBO0FYMjFCSjtBV3YxQk07RUFDQyw2Q0FBQTtBWHkxQlA7QVdyMUJLO0VBQ0MsY0FBQTtBWHUxQk47QVcvMEJHOzs7RUFFQyxtQ0FBQTtFQUNBLGNUckJHO0FGdTJCUCIsImZpbGUiOiJhc2guY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLyoqXG4gKiAwMS4gRGVwZW5kZW5jaWVzXG4gKiAwMi4gRnJvc3QgQmFzZVxuICogMDMuIEFzaCBCYXNlXG4gKi9cbkBpbXBvcnQgJy4uL2ZvbnRzL2dpbG1lci1ib2xkLmNzcyc7XG5AaW1wb3J0ICcuLi9mb250cy9naWxtZXItaGVhdnkuY3NzJztcbkBpbXBvcnQgJy4uL2ZvbnRzL2dpbG1lci1saWdodC5jc3MnO1xuQGltcG9ydCAnLi4vZm9udHMvZ2lsbWVyLW1lZGl1bS5jc3MnO1xuQGltcG9ydCAnLi4vZm9udHMvZ2lsbWVyLW91dGxpbmUuY3NzJztcbkBpbXBvcnQgJy4uL2ZvbnRzL2dpbG1lci1yZWd1bGFyLmNzcyc7XG4vKipcbiAqIDAxLiBGb250c1xuICogMDIuIENvbG9yc1xuICovXG4vKiBEZWZhdWx0c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5hLFxuYnV0dG9uLFxuaW5wdXQ6Zm9jdXMsXG5pbnB1dFt0eXBlPWJ1dHRvbl0sXG5pbnB1dFt0eXBlPXN1Ym1pdF0sXG50ZXh0YXJlYTpmb2N1cyxcbi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuYSxcbmE6bm90KC53cC1lbGVtZW50LWJ1dHRvbiksXG5hOmZvY3VzLFxuYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAxcHg7XG59XG5cbm9sLFxudWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tZm9udC13ZWlnaHQtLW1lZGl1bSk7XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDA7XG59XG5cbi8qXG4gKiBBbGlnbm1lbnQgU3R5bGVzIC0gT3JpZ2luYWxseSBmcm9tIFRUMi5cbiAqIFRoZXNlIHJ1bGVzIGFyZSB0ZW1wb3JhcnksIGFuZCBzaG91bGQgbm90XG4gKiBiZSByZWxpZWQgb24gb3IgbW9kaWZpZWQgdG9vIGhlYXZpbHkgYnlcbiAqIHRoZW1lcyBvciBwbHVnaW5zIHRoYXQgYnVpbGQgb24gRnJvc3QuXG4gKiBUaGVzZSBhcmUgbWVhbnQgdG8gYmUgYSBwcmVjdXJzb3IgdG8gYVxuICogZ2xvYmFsIHNvbHV0aW9uIHByb3ZpZGVkIGJ5IHRoZSBCbG9jayBFZGl0b3IuXG4gKlxuICogUmVsZXZhbnQgaXNzdWVzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvaXNzdWVzLzM1NjA3XG4gKiBodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9pc3N1ZXMvMzU4ODRcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5ib2R5ID4gLmlzLXJvb3QtY29udGFpbmVyLFxuLmVkaXQtcG9zdC12aXN1YWwtZWRpdG9yX19wb3N0LXRpdGxlLXdyYXBwZXIsXG4ud3AtYmxvY2stY292ZXIuYWxpZ25mdWxsLFxuLndwLWJsb2NrLWdyb3VwLmFsaWduZnVsbCxcbi53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi53cC1zaXRlLWJsb2NrcyB7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS13cC0tY3VzdG9tLS1zcGFjaW5nLS1vdXRlcik7XG59XG5cbi5ibG9jay1lZGl0b3ItYmxvY2stbGlzdF9fbGF5b3V0LmlzLXJvb3QtY29udGFpbmVyID4gLmFsaWduZnVsbCxcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay1jb3Zlcixcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWNvdmVyLFxuLmlzLXJvb3QtY29udGFpbmVyID4gLndwLWJsb2NrLXRlbXBsYXRlLXBhcnQgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQsXG4ud3Atc2l0ZS1ibG9ja3MgLmFsaWduZnVsbCxcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay1jb3Zlcixcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWNvdmVyLFxuLndwLXNpdGUtYmxvY2tzID4gLndwLWJsb2NrLXRlbXBsYXRlLXBhcnQgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQge1xuICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLXdwLS1jdXN0b20tLXNwYWNpbmctLW91dGVyKSkgIWltcG9ydGFudDtcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0xICogdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpKSAhaW1wb3J0YW50O1xuICB3aWR0aDogdW5zZXQ7XG59XG5cbi8qIEJsb2Nrc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogQnV0dG9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIENhbGVuZGFyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1jYWxlbmRhciB0YWJsZSBjYXB0aW9uLFxuLndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRib2R5IHtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xufVxuXG4ud3AtYmxvY2stY2FsZW5kYXIgdGJvZHkgdGQsXG4ud3AtYmxvY2stY2FsZW5kYXIgdGgge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbi8qIENhcHRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLWVtYmVkIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stZ2FsbGVyeSBmaWdjYXB0aW9uLFxuLndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stdGFibGUgZmlnY2FwdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLndwLWJsb2NrLWdhbGxlcnkgZmlnY2FwdGlvbiB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi8qIENvZGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLWNvZGUsXG4ud3AtYmxvY2stY29kZSBjb2RlIHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4ud3AtYmxvY2stY29kZSBjb2RlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gIHRhYi1zaXplOiA0O1xuICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7XG59XG5cbio6bm90KC53cC1ibG9jay1jb2RlKSA+IGNvZGUsXG5rYmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gIHBhZGRpbmc6IDVweCA4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuXG4vKlxuICogV2hlbiBpbmxpbmUgY29kZSBpcyBzZWxlY3RlZCwgdGhlIEVkaXRvciBhcHBsaWVzIGNvbnRleHR1YWwgc3R5bGluZy4gU2luY2VcbiAqIG91ciBjb2RlIGNvbG9yIGlzIG5lYXIgd2hpdGUsIHdlIG5lZWQgdG8gcmVzZXQgdG8gdGhlIGRlZmF1bHQgdGV4dCBjb2xvci5cbiAqL1xuLnJpY2gtdGV4dDpmb2N1cyA+IGNvZGVbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSxcbi5yaWNoLXRleHQ6Zm9jdXMgPiBrYmRbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSB7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG59XG5cbi8qIENvbW1lbnRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1jb21tZW50LXRlbXBsYXRlIGxpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLFxuLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSB0ZXh0YXJlYSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtIGlucHV0W3R5cGU9c3VibWl0XSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSAuZm9ybS1zdWJtaXQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBHcm91cFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stZ3JvdXAuaXMtc3R5bGUtZnVsbC1oZWlnaHQge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBkaXNwbGF5OiBncmlkO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuLndwLWJsb2NrLWdyb3VwLmlzLXN0eWxlLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCA1MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLndwLWJsb2NrLWdyb3VwLmlzLXN0eWxlLXNoYWRvdy1zb2xpZCB7XG4gIGJveC1zaGFkb3c6IDVweCA1cHggdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4vKiBJbWFnZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25jZW50ZXIge1xuICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLndwLWJsb2NrLWltYWdlLmFsaWdubGVmdCB7XG4gIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25yaWdodCB7XG4gIG1hcmdpbi1sZWZ0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi53cC1ibG9jay1pbWFnZS5pcy1zdHlsZS1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgNTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIExpc3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xub2wgbGk6d2hlcmUoOm5vdChbY2xhc3MqPWJsb2NrXSkpLFxub2wgbGk6d2hlcmUoLndwLWJsb2NrLWxpc3QpLFxudWwgbGk6d2hlcmUoOm5vdChbY2xhc3MqPWJsb2NrXSkpLFxudWwgbGk6d2hlcmUoLndwLWJsb2NrLWxpc3QpIHtcbiAgbWFyZ2luLWxlZnQ6IDMwcHg7XG59XG5cbi5pcy1zdHlsZS1uby1kaXNjIGxpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLyogTWVkaWEgJiBUZXh0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1tZWRpYS10ZXh0LmlzLXN0eWxlLXNoYWRvdy1tZWRpYSBpbWcge1xuICBib3gtc2hhZG93OiAwIDAgNTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIE5hdmlnYXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiB7XG4gIHBhZGRpbmc6IDMwcHggdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xufVxuXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2UsXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3BlbiB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgcGFkZGluZzogMnB4O1xufVxuXG4uaGFzLWJhY2tncm91bmQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLW9wZW4ge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG59XG5cbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpmb2N1cyxcbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG59XG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdChbc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0pIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb246bm90KFtzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSkgYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLyogTmF2aWdhdGlvbiBTdWJtZW51XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdCguaGFzLWJhY2tncm91bmQpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgYm9yZGVyOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uIDp3aGVyZSgud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIpIGEge1xuICBwYWRkaW5nOiAycHggMTBweDtcbn1cblxuLyogUGFyYWdyYXBoXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbnAuaGFzLWJhY2tncm91bmQge1xuICBwYWRkaW5nOiAyMHB4IDMwcHg7XG59XG5cbi8qIFByZWZvcm1hdHRlZFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stcHJlZm9ybWF0dGVkIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG59XG5cbi8qIFB1bGxxdW90ZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stcHVsbHF1b3RlIHAsXG4ud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCBwLFxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHAge1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbGFyZ2UpO1xuICBsaW5lLWhlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tbGluZS1oZWlnaHQtLW1lZGl1bSk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICBmb250LXN0eWxlOiBpbmhlcml0O1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDtcbn1cblxuLyogUXVvdGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLXF1b3RlIHtcbiAgYm94LXNoYWRvdzogNXB4IDVweCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG59XG5cbi53cC1ibG9jay1xdW90ZSBwOmxhc3Qtb2YtdHlwZSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cC1ibG9jay1xdW90ZSBjaXRlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gIGZvbnQtc3R5bGU6IGluaGVyaXQ7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG5cbi8qIFNlcGFyYXRvclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stc2VwYXJhdG9yLFxuLndwLWJsb2NrLXNlcGFyYXRvci5oYXMtY3NzLW9wYWNpdHkge1xuICBvcGFjaXR5OiAxO1xufVxuXG4ud3AtYmxvY2stc2VwYXJhdG9yOm5vdCguaXMtc3R5bGUtZG90cyksXG4ud3AtYmxvY2stc2VwYXJhdG9yLmhhcy1iYWNrZ3JvdW5kOm5vdCguaXMtc3R5bGUtZG90cykge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBoZWlnaHQ6IDFweDtcbn1cblxuLndwLWJsb2NrLXNlcGFyYXRvci5pcy1zdHlsZS1kb3RzOmJlZm9yZSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbGFyZ2UpO1xuICBsZXR0ZXItc3BhY2luZzogMTBweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4vKiBTaXRlIFRpdGxlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1zaXRlLXRpdGxlIGEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIFRhYmxlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRoZWFkIHtcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRmb290IHtcbiAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRkLFxuLndwLWJsb2NrLXRhYmxlIHRoLFxuLndwLWJsb2NrLXRhYmxlIHRyLFxuLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGQsXG4ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcyB0aCxcbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHRyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stdGFibGUgdGgge1xuICBmb250LXdlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tZm9udC13ZWlnaHQtLW1lZGl1bSk7XG59XG5cbi53cC1ibG9jay10YWJsZSB0ZCxcbi53cC1ibG9jay10YWJsZSB0aCB7XG4gIHBhZGRpbmc6IDVweDtcbn1cblxuLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuXG4vKiBDdXN0b21cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIEZvcm1zXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEsXG4ud3AtYmxvY2stc2VhcmNoX19pbnB1dCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYWNrZ3JvdW5kKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICBmb250LWZhbWlseTogdmFyKC0td3AtLXByZXNldC0tZm9udC1mYW1pbHktLXByaW1hcnkpO1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWZvbnQtd2VpZ2h0LS1yZWd1bGFyKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWxpbmUtaGVpZ2h0LS1ib2R5KTtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuaW5wdXRbdHlwZT1jaGVja2JveF0sXG5pbnB1dFt0eXBlPWltYWdlXSxcbmlucHV0W3R5cGU9cmFkaW9dIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbmlucHV0W3R5cGU9YnV0dG9uXSxcbmlucHV0W3R5cGU9ZW1haWxdLFxuaW5wdXRbdHlwZT1zZWFyY2hdLFxuaW5wdXRbdHlwZT1zdWJtaXRdLFxuaW5wdXRbdHlwZT10ZXh0XSxcbnRleHRhcmVhIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG46OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgb3BhY2l0eTogMC42O1xufVxuXG4ubmYtZmllbGQtY29udGFpbmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLyogRXhwZXJpbWVudGFsIFN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKlxuICogUmVtb3ZlIGJvdHRvbSBtYXJnaW4gd2hlbiBibG9ja3MgYXJlIHBsYWNlZCBpbiBjb250YWluZXIgYmxvY2tzIHRoYXQgZG8gbm90XG4gKiBzdXBwb3J0IGJsb2NrR2FwIChpLmUuIENvbHVtbiwgQ292ZXIsIE1lZGlhICYgVGV4dClcbiAqL1xuaDE6bGFzdC1jaGlsZCxcbmgyOmxhc3QtY2hpbGQsXG5oMzpsYXN0LWNoaWxkLFxuaDQ6bGFzdC1jaGlsZCxcbmg1Omxhc3QtY2hpbGQsXG5oNjpsYXN0LWNoaWxkLFxucDpsYXN0LWNoaWxkLFxuLndwLWJsb2NrLWltYWdlOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaXMtcm9vdC1jb250YWluZXIgaDEgKyAqLFxuLmlzLXJvb3QtY29udGFpbmVyIGgyICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoMyArICosXG4uaXMtcm9vdC1jb250YWluZXIgaDQgKyAqLFxuLmlzLXJvb3QtY29udGFpbmVyIGg1ICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoNiArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGgxICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDIgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoMyArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGg0ICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDUgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoNiArICosXG4ud3AtYmxvY2stcXVlcnktdGl0bGUgKyAqIHtcbiAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2stc3BhY2VyICsgKiB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLyogTWVkaWEgUXVlcmllc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4MDBweCkge1xuICAvKiBOYXZpZ2F0aW9uXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGEge1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgfVxuICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsIGE6aG92ZXIsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgfVxuICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhOmhvdmVyLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYTpob3Zlcixcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGEge1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gIH1cbiAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYTpob3Zlcixcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhOmhvdmVyLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAvKiBQdWxscXVvdGVcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0LFxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICB9XG4gIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcbiAgfVxuICAud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tbGVmdDogMzBweCAhaW1wb3J0YW50O1xuICB9XG59XG4ud3AtYmxvY2stcG9zdC10aXRsZSB7XG4gIG1heC13aWR0aDogY2xhbXAoODAlLCA5MHZoLCAxMDAlKTtcbn1cblxuLmhhcy1leWVicm93LWZvbnQtc2l6ZSB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItSGVhdnksIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xufVxuXG51bC5oYXMtZXllYnJvdy1mb250LXNpemUge1xuICBsaW5lLWhlaWdodDogMS4yNWVtO1xufVxudWwuaGFzLWV5ZWJyb3ctZm9udC1zaXplIGxpICsgbGkge1xuICBtYXJnaW4tdG9wOiAwLjM3NXJlbTtcbn1cblxuLmhhcy1sYXJnZS1mb250LXNpemUge1xuICBsaW5lLWhlaWdodDogMjhweDtcbn1cblxuLndwLWJsb2NrLXBvc3QtdGVybXMgW3JlbD10YWddIHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1SZWd1bGFyLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjM1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ud3AtYmxvY2stcG9zdC10ZXJtcy50YXhvbm9teS1scF9zb2x1dGlvbiBbcmVsPXRhZ10ge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIG1hcmdpbi1yaWdodDogMTJweDtcbiAgcGFkZGluZzogNXB4IDlweDtcbn1cbi53cC1ibG9jay1wb3N0LXRlcm1zLnRheG9ub215LWxwX3NvbHV0aW9uIC53cC1ibG9jay1wb3N0LXRlcm1zX19zZXBhcmF0b3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ud3AtYmxvY2stYnV0dG9uIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBsZXR0ZXItc3BhY2luZzogMS4wNXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBwYWRkaW5nOiAxLjM3NXJlbSAxLjVyZW07XG59XG4ud3AtYmxvY2stYnV0dG9uIC53cC1ibG9jay1idXR0b25fX2xpbms6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gIGJhY2tncm91bmQ6ICMzZmMxZDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICMzZmMxZDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjM2ZjMWQwO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvcjpub3QoLmhhcy10ZXh0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbik7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtYmFzZS1iYWNrZ3JvdW5kLWNvbG9yOm5vdCguaGFzLXRleHQtY29sb3IpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtbWFpbi1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtcHJpbWFyeS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvcjpub3QoLmhhcy10ZXh0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbik7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtbWFpbi1iYWNrZ3JvdW5kLWNvbG9yOm5vdCguaGFzLXRleHQtY29sb3IpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtbWFpbi1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtcHJpbWFyeS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjpub3QoLmhhcy10ZXh0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOm5vdCguaGFzLXRleHQtY29sb3IpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtbWFpbi1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtcHJpbWFyeS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1vdXRsaW5lIC53cC1ibG9jay1idXR0b25fX2xpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICNmZmY7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLW91dGxpbmUgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbn1cbi53cC1ibG9jay1idXR0b24uaXMtc3R5bGUtb3V0bGluZSAud3AtYmxvY2stYnV0dG9uX19saW5rLmhhcy1tYWluLWNvbG9yOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1vdXRsaW5lIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktY29sb3I6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSkgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAud3AtYmxvY2stZ3JvdXAuZmxleC1hdXRvIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuICAud3AtYmxvY2stZ3JvdXAuZmxleC1zaWRlYmFyIHtcbiAgICBmbGV4OiAwIDAgNDAwcHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAud3AtYmxvY2stZ3JvdXAubWVkaXVtLWZsZXgtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLndwLWJsb2NrLWdyb3VwLm1lZGl1bS1mbGV4LXdyYXAuZmxleC1zaWRlYmFyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgfVxufVxuXG4vKipcbiAqIDAxLiBMYXlvdXRcbiAqIDAyLiBEYXNoYm9hcmQgTmF2aWdhdGlvblxuICovXG4uc2luZ2xlLXByb3Bvc2FsIC53cC1zaXRlLWJsb2NrcyB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC53cC1zaXRlLWJsb2NrcyAuc2l0ZS1jb250ZW50IHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC53cC1zaXRlLWJsb2NrcyAuc2l0ZS1mb290ZXIge1xuICBtYXJnaW46IDA7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC5zaXRlLWNvbnRlbnQgPiAud3AtYmxvY2stcGFnZS1saXN0IHtcbiAgYmFja2dyb3VuZDogI2ZhZmFmYTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAzMDBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgcGFkZGluZzogMXJlbSAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC5zaXRlLWNvbnRlbnQgPiAud3AtYmxvY2stcGFnZS1saXN0IC53cC1ibG9jay1wYWdlcy1saXN0X19pdGVtX19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xufVxuXG4vKipcbiAqIDAxLiBIZWFkaW5nc1xuICogMDIuIFdlaWdodHNcbiAqIDAzLiBQYXJhZ3JhcGhcbiAqIDA0LiBMaW5rXG4gKi9cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG5oMSwgaDIsIGgzLCBoNSB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItSGVhdnksIHNhbnMtc2VyaWY7XG59XG5cbmgxLndwLWJsb2NrLXBvc3QtdGl0bGUge1xuICBmb250LXNpemU6IGNsYW1wKDUwcHgsIDh2dywgOTBweCk7XG59XG5cbmgxIHtcbiAgZm9udC1zaXplOiBjbGFtcCg1MHB4LCA4dncsIDkwcHgpO1xuICBsaW5lLWhlaWdodDogMS4xMjVlbTtcbn1cblxuaDIge1xuICBmb250LXNpemU6IGNsYW1wKDM2cHgsIDd2dywgNDhweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbn1cblxuaDMge1xuICBmb250LXNpemU6IGNsYW1wKDMwcHgsIDZ2dywgNDBweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbn1cblxuaDQge1xuICBmb250LXNpemU6IGNsYW1wKDI0cHgsIDV2dywgMzJweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjMxMjVlbTtcbn1cblxuaDUge1xuICBmb250LXNpemU6IGNsYW1wKDIwcHgsIDR2dywgMjRweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbn1cblxuaDYge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjM3NWVtO1xufVxuXG4uZm9udC13ZWlnaHQtbGlnaHQge1xuICBmb250LWZhbWlseTogR2lsbWVyLUxpZ2h0LCBzYW5zLXNlcmlmO1xufVxuXG4uZm9udC13ZWlnaHQtcmVndWxhciB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItUmVndWxhciwgc2Fucy1zZXJpZjtcbn1cblxuLmZvbnQtd2VpZ2h0LW1lZGl1bSB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItTWVkaXVtLCBzYW5zLXNlcmlmO1xufVxuXG4uZm9udC13ZWlnaHQtYm9sZCB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItQm9sZCwgc2Fucy1zZXJpZjtcbn1cblxuLmZvbnQtd2VpZ2h0LWhlYXZ5IHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1IZWF2eSwgc2Fucy1zZXJpZjtcbn1cblxuc3Ryb25nIHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1Cb2xkLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4uaGVhdnkge1xuICBmb250LWZhbWlseTogR2lsbWVyLUhlYXZ5LCBzYW5zLXNlcmlmO1xufVxuXG5wIHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1SZWd1bGFyLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxucC5zbWFsbCxcbnAgc21hbGwge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xufVxucC5jdGEge1xuICBmb250LWZhbWlseTogR2lsbWVyLUhlYXZ5LCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xufVxuXG4uZW50cnktY29udGVudCBhIHtcbiAgY29sb3I6ICMzZmMxZDA7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItSGVhdnksIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG59XG5cbi5wb3N0LXR5cGUtcHJvcG9zYWwtcGFnZSBoMS5ibG9jay1lZGl0b3ItYmxvY2stbGlzdF9fYmxvY2suZWRpdG9yLXBvc3QtdGl0bGUuZWRpdG9yLXBvc3QtdGl0bGVfX2lucHV0LnJpY2gtdGV4dC53cC1ibG9jay53cC1ibG9jay1wb3N0LXRpdGxlIHtcbiAgZm9udC1zaXplOiAyNHB4ICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucG9zdC10eXBlLXByb3Bvc2FsLXBhZ2UgI2VkaXRvciBkaXYuZWRpdC1wb3N0LXZpc3VhbC1lZGl0b3JfX3Bvc3QtdGl0bGUtd3JhcHBlciA+IGgxLmJsb2NrLWVkaXRvci1ibG9jay1saXN0X19ibG9jayB7XG4gIGZvbnQtc2l6ZTogMjRweCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmNkLWFjY29yZGlvbiB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHdpZHRoOiAzMDBweDtcbn1cbi5jZC1hY2NvcmRpb25fX2l0ZW0ge1xuICBtYXJnaW46IDA7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtIGEsXG4uY2QtYWNjb3JkaW9uX19pdGVtIC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMXJlbTtcbiAgY29sb3I6ICMwMDFlMWU7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItTGlnaHQsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtIC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcbiAgcGFkZGluZy1yaWdodDogMS41cmVtO1xufVxuLmNkLWFjY29yZGlvbl9faXRlbS0taGFzLWNoaWxkcmVuIC5jZC1hY2NvcmRpb25fX2xhYmVsOmFmdGVyIHtcbiAgY29udGVudDogXCLilr5cIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgMC41cmVtIDAgMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4yNXJlbSk7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtLS1oYXMtY2hpbGRyZW4gLmNoaWxkcmVuIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwIDAgMnJlbTtcbiAgcGFkZGluZzogMCAwIDAgMC4yNXJlbTtcbn1cbi5jZC1hY2NvcmRpb25fX2l0ZW0tLWhhcy1jaGlsZHJlbiAuY2QtYWNjb3JkaW9uX19pbnB1dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtLS1oYXMtY2hpbGRyZW4gLmNkLWFjY29yZGlvbl9faW5wdXQ6Y2hlY2tlZCB+IC5jZC1hY2NvcmRpb25fX2xhYmVsOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAuMjVyZW0pIHJvdGF0ZSgxODBkZWcpO1xufVxuLmNkLWFjY29yZGlvbl9faXRlbS0taGFzLWNoaWxkcmVuIC5jZC1hY2NvcmRpb25fX2lucHV0OmNoZWNrZWQgfiAuY2hpbGRyZW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5jZC1hY2NvcmRpb25fX2l0ZW0uYWN0aXZlID4gYSxcbi5jZC1hY2NvcmRpb25fX2l0ZW0uYWN0aXZlID4gLmNkLWFjY29yZGlvbl9fbGFiZWwsIC5jZC1hY2NvcmRpb25fX2l0ZW06aG92ZXIgPiBhLFxuLmNkLWFjY29yZGlvbl9faXRlbTpob3ZlciA+IC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcbiAgYmFja2dyb3VuZDogcmdiYSg2MywgMTkzLCAyMDgsIDAuMSk7XG4gIGNvbG9yOiAjM2ZjMWQwO1xufSIsIi8qKlxuICogMDEuIERlcGVuZGVuY2llc1xuICogMDIuIEZyb3N0IEJhc2VcbiAqIDAzLiBBc2ggQmFzZVxuICovXG5cblxuLy8gMDEuIERlcGVuZGVuY2llc1xuXG5AaW1wb3J0XG5cdCcuLi9mb250cy9naWxtZXItYm9sZC5jc3MnLFxuXHQnLi4vZm9udHMvZ2lsbWVyLWhlYXZ5LmNzcycsXG5cdCcuLi9mb250cy9naWxtZXItbGlnaHQuY3NzJyxcblx0Jy4uL2ZvbnRzL2dpbG1lci1tZWRpdW0uY3NzJyxcblx0Jy4uL2ZvbnRzL2dpbG1lci1vdXRsaW5lLmNzcycsXG5cdCcuLi9mb250cy9naWxtZXItcmVndWxhci5jc3MnLFxuXHQnY29uZmlnL3ZhcmlhYmxlcydcbjtcblxuXG4vLyAwMi4gRnJvc3QgQmFzZVxuXG5AaW1wb3J0ICdmcm9zdCc7XG5cblxuLy8gMDMuIEFzaCBCYXNlXG5cbkBpbXBvcnRcblx0J2Jsb2Nrcy90eXBvZ3JhcGh5Jyxcblx0J2Jsb2Nrcy9wb3N0LXRlcm1zJyxcblx0J2Jsb2Nrcy9idXR0b24nLFxuXHQnYmxvY2tzL2dyb3VwJyxcblx0J3BhZ2VzL3Byb3Bvc2FsJyxcblx0J2NvbXBvbmVudHMvdHlwb2dyYXBoeScsXG5cdCdjb21wb25lbnRzL2VkaXRvcicsXG5cdCdjb21wb25lbnRzL2NkLWFjY29yZGlvbidcbjtcbiIsIi8qKlxuICogMDEuIEZvbnRzXG4gKiAwMi4gQ29sb3JzXG4gKi9cblxuXG4vLyAwMS4gRm9udHNcblxuJGdpbG1lci1saWdodDogR2lsbWVyLUxpZ2h0LCBzYW5zLXNlcmlmO1xuJGdpbG1lci1yZWd1bGFyOiBHaWxtZXItUmVndWxhciwgc2Fucy1zZXJpZjtcbiRnaWxtZXItbWVkaXVtOiBHaWxtZXItTWVkaXVtLCBzYW5zLXNlcmlmO1xuJGdpbG1lci1ib2xkOiBHaWxtZXItQm9sZCwgc2Fucy1zZXJpZjtcbiRnaWxtZXItaGVhdnk6IEdpbG1lci1IZWF2eSwgc2Fucy1zZXJpZjtcbiRnaWxtZXItb3V0bGluZTogR2lsbWVyLU91dGxpbmUsIHNhbnMtc2VyaWY7XG5cbiRmb250LXdlaWdodC1tYXA6IChcblx0J2xpZ2h0JzogJGdpbG1lci1saWdodCxcblx0J3JlZ3VsYXInOiAkZ2lsbWVyLXJlZ3VsYXIsXG5cdCdtZWRpdW0nOiAkZ2lsbWVyLW1lZGl1bSxcblx0J2JvbGQnOiAkZ2lsbWVyLWJvbGQsXG5cdCdoZWF2eSc6ICRnaWxtZXItaGVhdnlcbik7XG5cbiRoZWFkaW5nLXNpemUtbWFwOiAoXG5cdGgxOiBjbGFtcCg1MHB4LCA4dncsIDkwcHgpLFxuXHRoMjogY2xhbXAoMzZweCwgN3Z3LCA0OHB4KSxcblx0aDM6IGNsYW1wKDMwcHgsIDZ2dywgNDBweCksXG5cdGg0OiBjbGFtcCgyNHB4LCA1dncsIDMycHgpLFxuXHRoNTogY2xhbXAoMjBweCwgNHZ3LCAyNHB4KSxcblx0aDY6IDE2cHhcbik7XG5cbiRsaW5lLWhlaWdodC1tYXA6IChcblx0aDE6IDEuMTI1ZW0sXG5cdGgyOiAxLjJlbSxcblx0aDM6IDEuMmVtLFxuXHRoNDogMS4zMTI1ZW0sXG5cdGg1OiAxLjRlbSxcblx0aDY6IDEuMzc1ZW0sXG5cdHBzbWFsbDogMThweCxcblx0cGxhcmdlOiAyOHB4LFxuXHRwOiAyNHB4LFxuXHRhOiAyOHB4LFxuXHRleWVicm93OiAxNnB4LFxuXHRjdGE6IDI4cHhcbik7XG5cblxuLy8gMDIuIENvbG9yc1xuXG4kYmx1ZTogIzNmYzFkMDtcbiRtYWdlbnRhOiAjZTUzMzZhO1xuJGdyZWVuOiAjOGZjYTUyO1xuJHZpb2xldDogIzdkNThjNjtcbiRsaWdodC12aW9sZXQ6ICNmNmYyZmY7XG4kZGFyay1ibHVlOiAjM2FhMWNlO1xuJGJsYWNrOiAjMDAxZTFlO1xuJGJsYWNrLTUwOiByZ2JhKDMsIDMwLCAzMCwgLjUpO1xuJGJsYWNrLTI1OiByZ2JhKDMsIDMwLCAzMCwgLjI1KTtcbiRsaWdodC1ncmF5OiAjZmFmYWZhO1xuJHdoaXRlOiAjZmZmO1xuJHdoaXRlLTc1OiByZ2JhKCR3aGl0ZSwgLjc1KTtcbiR3aGl0ZS01MDogcmdiYSgkd2hpdGUsIC41KTtcbiIsIi8qIERlZmF1bHRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cblxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5hLFxuYnV0dG9uLFxuaW5wdXQ6Zm9jdXMsXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbnRleHRhcmVhOmZvY3VzLFxuLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG59XG5cbmEsXG5hOm5vdCgud3AtZWxlbWVudC1idXR0b24pLFxuYTpmb2N1cyxcbmE6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweDtcbn1cblxub2wsXG51bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbmIsXG5zdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS13cC0tY3VzdG9tLS1mb250LXdlaWdodC0tbWVkaXVtKTtcbn1cblxuYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKlxuICogQWxpZ25tZW50IFN0eWxlcyAtIE9yaWdpbmFsbHkgZnJvbSBUVDIuXG4gKiBUaGVzZSBydWxlcyBhcmUgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIG5vdFxuICogYmUgcmVsaWVkIG9uIG9yIG1vZGlmaWVkIHRvbyBoZWF2aWx5IGJ5XG4gKiB0aGVtZXMgb3IgcGx1Z2lucyB0aGF0IGJ1aWxkIG9uIEZyb3N0LlxuICogVGhlc2UgYXJlIG1lYW50IHRvIGJlIGEgcHJlY3Vyc29yIHRvIGFcbiAqIGdsb2JhbCBzb2x1dGlvbiBwcm92aWRlZCBieSB0aGUgQmxvY2sgRWRpdG9yLlxuICpcbiAqIFJlbGV2YW50IGlzc3VlczpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL2lzc3Vlcy8zNTYwN1xuICogaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvaXNzdWVzLzM1ODg0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5ib2R5ID4gLmlzLXJvb3QtY29udGFpbmVyLFxuLmVkaXQtcG9zdC12aXN1YWwtZWRpdG9yX19wb3N0LXRpdGxlLXdyYXBwZXIsXG4ud3AtYmxvY2stY292ZXIuYWxpZ25mdWxsLFxuLndwLWJsb2NrLWdyb3VwLmFsaWduZnVsbCxcbi53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi53cC1zaXRlLWJsb2NrcyB7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS13cC0tY3VzdG9tLS1zcGFjaW5nLS1vdXRlcik7XG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xufVxuXG4uYmxvY2stZWRpdG9yLWJsb2NrLWxpc3RfX2xheW91dC5pcy1yb290LWNvbnRhaW5lciA+IC5hbGlnbmZ1bGwsXG4uaXMtcm9vdC1jb250YWluZXIgPiAud3AtYmxvY2stY292ZXIsXG4uaXMtcm9vdC1jb250YWluZXIgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQsXG4uaXMtcm9vdC1jb250YWluZXIgPiAud3AtYmxvY2stdGVtcGxhdGUtcGFydCA+IC53cC1ibG9jay1jb3Zlcixcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWdyb3VwLmhhcy1iYWNrZ3JvdW5kLFxuLndwLXNpdGUtYmxvY2tzIC5hbGlnbmZ1bGwsXG4ud3Atc2l0ZS1ibG9ja3MgPiAud3AtYmxvY2stY292ZXIsXG4ud3Atc2l0ZS1ibG9ja3MgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQsXG4ud3Atc2l0ZS1ibG9ja3MgPiAud3AtYmxvY2stdGVtcGxhdGUtcGFydCA+IC53cC1ibG9jay1jb3Zlcixcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWdyb3VwLmhhcy1iYWNrZ3JvdW5kIHtcbiAgICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLXdwLS1jdXN0b20tLXNwYWNpbmctLW91dGVyKSkgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTEgKiB2YXIoLS13cC0tY3VzdG9tLS1zcGFjaW5nLS1vdXRlcikpICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IHVuc2V0O1xufVxuXG4vKiBCbG9ja3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogQnV0dG9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG4vKiBDYWxlbmRhclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1jYWxlbmRhciB0YWJsZSBjYXB0aW9uLFxuLndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRib2R5IHtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stY2FsZW5kYXIgdGFibGUgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xufVxuXG4ud3AtYmxvY2stY2FsZW5kYXIgdGJvZHkgdGQsXG4ud3AtYmxvY2stY2FsZW5kYXIgdGgge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4vKiBDYXB0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLWVtYmVkIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stZ2FsbGVyeSBmaWdjYXB0aW9uLFxuLndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stdGFibGUgZmlnY2FwdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi53cC1ibG9jay1nYWxsZXJ5IGZpZ2NhcHRpb24ge1xuICAgIG1hcmdpbi10b3A6IDA7XG59XG5cbi8qIENvZGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2stY29kZSxcbi53cC1ibG9jay1jb2RlIGNvZGUge1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuLndwLWJsb2NrLWNvZGUgY29kZSB7XG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgICB0YWItc2l6ZTogNDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7XG59XG5cbio6bm90KC53cC1ibG9jay1jb2RlKSA+IGNvZGUsXG5rYmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gICAgcGFkZGluZzogNXB4IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMXB4O1xufVxuXG4vKlxuICogV2hlbiBpbmxpbmUgY29kZSBpcyBzZWxlY3RlZCwgdGhlIEVkaXRvciBhcHBsaWVzIGNvbnRleHR1YWwgc3R5bGluZy4gU2luY2VcbiAqIG91ciBjb2RlIGNvbG9yIGlzIG5lYXIgd2hpdGUsIHdlIG5lZWQgdG8gcmVzZXQgdG8gdGhlIGRlZmF1bHQgdGV4dCBjb2xvci5cbiAqL1xuLnJpY2gtdGV4dDpmb2N1cyA+IGNvZGVbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSxcbi5yaWNoLXRleHQ6Zm9jdXMgPiBrYmRbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSB7XG4gICAgY29sb3I6IGN1cnJlbnRDb2xvcjtcbn1cblxuLyogQ29tbWVudHNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2stY29tbWVudC10ZW1wbGF0ZSBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLFxuLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSB0ZXh0YXJlYSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXRbdHlwZT1zdWJtaXRdIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gLmZvcm0tc3VibWl0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBHcm91cFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1ncm91cC5pcy1zdHlsZS1mdWxsLWhlaWdodCB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG4ud3AtYmxvY2stZ3JvdXAuaXMtc3R5bGUtc2hhZG93IHtcbiAgICBib3gtc2hhZG93OiAwIDAgNTBweCByZ2IoMCAwIDAgLyAxMCUpO1xufVxuXG4ud3AtYmxvY2stZ3JvdXAuaXMtc3R5bGUtc2hhZG93LXNvbGlkIHtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLyogSW1hZ2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25jZW50ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi53cC1ibG9jay1pbWFnZS5hbGlnbmxlZnQge1xuICAgIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMwcHggIWltcG9ydGFudDtcbn1cblxuLndwLWJsb2NrLWltYWdlLmlzLXN0eWxlLXNoYWRvdyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDUwcHggcmdiYSgwLCAwLCAwLCAuMSk7XG59XG5cbi8qIExpc3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5vbCBsaTp3aGVyZSg6bm90KFtjbGFzcyo9J2Jsb2NrJ10pKSxcbm9sIGxpOndoZXJlKC53cC1ibG9jay1saXN0KSxcbnVsIGxpOndoZXJlKDpub3QoW2NsYXNzKj0nYmxvY2snXSkpLFxudWwgbGk6d2hlcmUoLndwLWJsb2NrLWxpc3QpIHtcbiAgICBtYXJnaW4tbGVmdDogMzBweDtcbn1cblxuLmlzLXN0eWxlLW5vLWRpc2MgbGkge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLyogTWVkaWEgJiBUZXh0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLW1lZGlhLXRleHQuaXMtc3R5bGUtc2hhZG93LW1lZGlhIGltZyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDUwcHggcmdiKDAgMCAwIC8gMTAlKTtcbn1cblxuLyogTmF2aWdhdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4ge1xuICAgIHBhZGRpbmc6IDMwcHggdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xufVxuXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2UsXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3BlbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIHBhZGRpbmc6IDJweDtcbn1cblxuLmhhcy1iYWNrZ3JvdW5kIC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1vcGVuIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG59XG5cbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpmb2N1cyxcbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYWNrZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLW5hdmlnYXRpb246bm90KFtzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSkgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdChbc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0pIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSBhOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIE5hdmlnYXRpb24gU3VibWVudVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdCguaGFzLWJhY2tncm91bmQpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIGJvcmRlcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gICAgcGFkZGluZzogMTBweDtcbn1cblxuLndwLWJsb2NrLW5hdmlnYXRpb24gOndoZXJlKC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcikgYSB7XG4gICAgcGFkZGluZzogMnB4IDEwcHg7XG59XG5cbi8qIFBhcmFncmFwaFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnAuaGFzLWJhY2tncm91bmQge1xuICAgIHBhZGRpbmc6IDIwcHggMzBweDtcbn1cblxuLyogUHJlZm9ybWF0dGVkXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXByZWZvcm1hdHRlZCB7XG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xufVxuXG4vKiBQdWxscXVvdGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2stcHVsbHF1b3RlIHAsXG4ud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCBwLFxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHAge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1sYXJnZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWxpbmUtaGVpZ2h0LS1tZWRpdW0pO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXN0eWxlOiBpbmhlcml0O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7XG59XG5cbi8qIFF1b3RlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXF1b3RlIHtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXF1b3RlIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ud3AtYmxvY2stcXVvdGUgY2l0ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXN0eWxlOiBpbmhlcml0O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbn1cblxuLyogU2VwYXJhdG9yXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXNlcGFyYXRvcixcbi53cC1ibG9jay1zZXBhcmF0b3IuaGFzLWNzcy1vcGFjaXR5IHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ud3AtYmxvY2stc2VwYXJhdG9yOm5vdCguaXMtc3R5bGUtZG90cyksXG4ud3AtYmxvY2stc2VwYXJhdG9yLmhhcy1iYWNrZ3JvdW5kOm5vdCguaXMtc3R5bGUtZG90cykge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgaGVpZ2h0OiAxcHg7XG59XG5cbi53cC1ibG9jay1zZXBhcmF0b3IuaXMtc3R5bGUtZG90czpiZWZvcmUge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1sYXJnZSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEwcHg7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4vKiBTaXRlIFRpdGxlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXNpdGUtdGl0bGUgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4vKiBUYWJsZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4ud3AtYmxvY2stdGFibGUgdGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbi53cC1ibG9jay10YWJsZSB0aGVhZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRmb290IHtcbiAgICBib3JkZXItdG9wOiAzcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stdGFibGUgdGQsXG4ud3AtYmxvY2stdGFibGUgdGgsXG4ud3AtYmxvY2stdGFibGUgdHIsXG4ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcyB0ZCxcbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHRoLFxuLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdHIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRoIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tZm9udC13ZWlnaHQtLW1lZGl1bSk7XG59XG5cbi53cC1ibG9jay10YWJsZSB0ZCxcbi53cC1ibG9jay10YWJsZSB0aCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuXG4ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcyB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbn1cblxuLyogQ3VzdG9tXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIEZvcm1zXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSxcbi53cC1ibG9jay1zZWFyY2hfX2lucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0td3AtLXByZXNldC0tZm9udC1mYW1pbHktLXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1tZWRpdW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS13cC0tY3VzdG9tLS1mb250LXdlaWdodC0tcmVndWxhcik7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWxpbmUtaGVpZ2h0LS1ib2R5KTtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJpbWFnZVwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgd2lkdGg6IGF1dG87XG59XG5cbmlucHV0W3R5cGU9XCJidXR0b25cIl0sXG5pbnB1dFt0eXBlPVwiZW1haWxcIl0sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxudGV4dGFyZWEge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLm5mLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLyogRXhwZXJpbWVudGFsIFN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qXG4gKiBSZW1vdmUgYm90dG9tIG1hcmdpbiB3aGVuIGJsb2NrcyBhcmUgcGxhY2VkIGluIGNvbnRhaW5lciBibG9ja3MgdGhhdCBkbyBub3RcbiAqIHN1cHBvcnQgYmxvY2tHYXAgKGkuZS4gQ29sdW1uLCBDb3ZlciwgTWVkaWEgJiBUZXh0KVxuICovXG5oMTpsYXN0LWNoaWxkLFxuaDI6bGFzdC1jaGlsZCxcbmgzOmxhc3QtY2hpbGQsXG5oNDpsYXN0LWNoaWxkLFxuaDU6bGFzdC1jaGlsZCxcbmg2Omxhc3QtY2hpbGQsXG5wOmxhc3QtY2hpbGQsXG4ud3AtYmxvY2staW1hZ2U6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmlzLXJvb3QtY29udGFpbmVyIGgxICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoMiArICosXG4uaXMtcm9vdC1jb250YWluZXIgaDMgKyAqLFxuLmlzLXJvb3QtY29udGFpbmVyIGg0ICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoNSArICosXG4uaXMtcm9vdC1jb250YWluZXIgaDYgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoMSArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGgyICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDMgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoNCArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGg1ICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDYgKyAqLFxuLndwLWJsb2NrLXF1ZXJ5LXRpdGxlICsgKiB7XG4gICAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2stc3BhY2VyICsgKiB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4vKiBNZWRpYSBRdWVyaWVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogODAwcHgpIHtcblxuICAgIC8qIE5hdmlnYXRpb25cbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYSB7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmZvY3VzLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpmb2N1cyxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYTpmb2N1cyxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYTpob3ZlcixcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gICAgfVxuXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsLWJhY2tncm91bmQgYTpmb2N1cyxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhOmhvdmVyLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmZvY3VzLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmhvdmVyLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhOmZvY3VzLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhOmhvdmVyLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsLWJhY2tncm91bmQgYTpob3ZlcixcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYSxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLyogUHVsbHF1b3RlXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICAud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCxcbiAgICAud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQge1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIH1cblxuICAgIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25yaWdodCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDMwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbn1cbiIsIi53cC1ibG9jay1wb3N0LXRpdGxlIHtcblx0bWF4LXdpZHRoOiBjbGFtcCg4MCUsIDkwdmgsIDEwMCUpO1xufVxuXG4uaGFzLWV5ZWJyb3ctZm9udC1zaXplIHtcblx0Zm9udC1mYW1pbHk6ICRnaWxtZXItaGVhdnk7XG5cdGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHQtbWFwLCBleWVicm93ICk7XG59XG5cbnVsLmhhcy1leWVicm93LWZvbnQtc2l6ZSB7XG5cdGxpbmUtaGVpZ2h0OiAxLjI1ZW07XG5cblx0bGkge1xuXHRcdCsgbGkge1xuXHRcdFx0bWFyZ2luLXRvcDogLjM3NXJlbTtcblx0XHR9XG5cdH1cbn1cblxuLmhhcy1sYXJnZS1mb250LXNpemUge1xuXHRsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0LW1hcCwgcGxhcmdlICk7XG59XG4iLCIud3AtYmxvY2stcG9zdC10ZXJtcyB7XG5cdFtyZWw9XCJ0YWdcIl0ge1xuXHRcdGZvbnQ6IHtcblx0XHRcdGZhbWlseTogJGdpbG1lci1yZWd1bGFyO1xuXHRcdFx0c2l6ZTogMTRweDtcblx0XHR9O1xuXHRcdGxldHRlci1zcGFjaW5nOiAuMzVweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdCYudGF4b25vbXktbHBfc29sdXRpb24ge1xuXHRcdFtyZWw9XCJ0YWdcIl0ge1xuXHRcdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxMnB4O1xuXHRcdFx0cGFkZGluZzogNXB4IDlweDtcblx0XHR9XG5cblx0XHQud3AtYmxvY2stcG9zdC10ZXJtc19fc2VwYXJhdG9yIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG4iLCIkZmlsbC10eXBlczogYmFzZSwgbWFpbiwgcHJpbWFyeTtcbiR0ZXh0LW1hcDogKFxuXHRiYXNlOiBtYWluLFxuXHRtYWluOiBiYXNlLFxuXHRwcmltYXJ5OiBiYXNlXG4pO1xuXG4vLyAgR2xvYmFsIGJsb2NrIGJ1dHRvbiBzZXR0aW5nc1xuLndwLWJsb2NrLWJ1dHRvbiB7XG5cdC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsaW5lLWhlaWdodDogMTZweDtcblx0XHRsZXR0ZXItc3BhY2luZzogMS4wNXB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0cGFkZGluZzogMS4zNzVyZW0gMS41cmVtO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQnV0dG9uIHN0eWxlIGZpbGxcblx0Ji5pcy1zdHlsZS1maWxsIHtcblx0XHQud3AtYmxvY2stYnV0dG9uX19saW5rIHtcblx0XHRcdGJhY2tncm91bmQ6ICRibHVlO1xuXHRcdFx0Ym9yZGVyOiAycHggc29saWQgJGJsdWU7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0Y29sb3I6ICRibHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRAZWFjaCAkZmlsbC10eXBlIGluICRmaWxsLXR5cGVzIHtcblx0XHRcdFx0JHRleHQtY29sb3I6IG1hcC1nZXQoJHRleHQtbWFwLCAkZmlsbC10eXBlKTtcblxuXHRcdFx0XHQkZmlsbDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JGZpbGwtdHlwZX0pO1xuXHRcdFx0XHQkdGV4dDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JHRleHQtY29sb3J9KTtcblxuXHRcdFx0XHQmLmhhcy0jeyRmaWxsLXR5cGV9LWJhY2tncm91bmQtY29sb3I6bm90KC5oYXMtdGV4dC1jb2xvcikge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICRmaWxsO1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGZpbGw7XG5cdFx0XHRcdFx0Y29sb3I6ICR0ZXh0O1xuXG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkdGV4dCAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkdGV4dDtcblx0XHRcdFx0XHRcdGNvbG9yOiAkZmlsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmhhcy0jeyRmaWxsLXR5cGV9LWJhY2tncm91bmQtY29sb3IuaGFzLXRleHQtY29sb3Ige1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGZpbGw7XG5cblx0XHRcdFx0XHRAZWFjaCAkZmlsbC10eXBlIGluICRmaWxsLXR5cGVzIHtcblx0XHRcdFx0XHRcdCYuaGFzLSN7JGZpbGwtdHlwZX0tY29sb3Ige1xuXHRcdFx0XHRcdFx0XHQkZmlsbDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JGZpbGwtdHlwZX0pO1xuXHRcdFx0XHRcdFx0XHQkdGV4dC1jb2xvcjogbWFwLWdldCgkdGV4dC1tYXAsICRmaWxsLXR5cGUpO1xuXHRcdFx0XHRcdFx0XHQkdGV4dDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JHRleHQtY29sb3J9KTtcblxuXHRcdFx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkZmlsbCAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGZpbGw7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I6ICR0ZXh0ICFpbXBvcnRhbnQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBCdXR0b24gc3R5bGUgb3V0bGluZVxuXHQmLmlzLXN0eWxlLW91dGxpbmUge1xuXHRcdC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cblx0XHRcdEBlYWNoICRmaWxsLXR5cGUgaW4gJGZpbGwtdHlwZXMge1xuXHRcdFx0XHQmLmhhcy0jeyRmaWxsLXR5cGV9LWNvbG9yIHtcblx0XHRcdFx0XHQkZmlsbC1ob3Zlci1jb2xvcjogbWFwLWdldCgkdGV4dC1tYXAsICRmaWxsLXR5cGUpO1xuXHRcdFx0XHRcdCRmaWxsLWhvdmVyOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tI3skZmlsbC1ob3Zlci1jb2xvcn0pO1xuXG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkZmlsbC1ob3ZlciAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZmlsbC1ob3Zlcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi53cC1ibG9jay1ncm91cCB7XG5cdEBtZWRpYSBzY3JlZW4gYW5kICggbWluLXdpZHRoOiAxMDI0cHggKSB7XG5cdFx0Ji5mbGV4LWF1dG8ge1xuXHRcdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0fVxuXG5cdFx0Ji5mbGV4LXNpZGViYXIge1xuXHRcdFx0ZmxleDogMCAwIDQwMHB4O1xuXHRcdH1cblx0fVxuXG5cdEBtZWRpYSBzY3JlZW4gYW5kICggbWF4LXdpZHRoOiAxMDIzcHggKSB7XG5cdFx0Ji5tZWRpdW0tZmxleC13cmFwIHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xuXG5cdFx0XHQmLmZsZXgtc2lkZWJhciB7XG5cdFx0XHRcdGZsZXg6IDAgMCAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLyoqXG4gKiAwMS4gTGF5b3V0XG4gKiAwMi4gRGFzaGJvYXJkIE5hdmlnYXRpb25cbiAqL1xuXG4uc2luZ2xlLXByb3Bvc2FsIHtcblx0Ly8gMDEuIExheW91dFxuXHQud3Atc2l0ZS1ibG9ja3Mge1xuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblxuXHRcdC5zaXRlLWNvbnRlbnQge1xuXHRcdFx0bWluLWhlaWdodDogMTAwdmg7XG5cdFx0XHRwYWRkaW5nOiB7XG5cdFx0XHRcdHRvcDogMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRib3R0b206IDAgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuc2l0ZS1mb290ZXIge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cblx0LnNpdGUtY29udGVudCB7XG5cdFx0Ly8gMDEuIERhc2hib2FyZCBOYXZpZ2F0aW9uXG5cblx0XHQ+IC53cC1ibG9jay1wYWdlLWxpc3Qge1xuXHRcdFx0YmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG5cdFx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcblx0XHRcdHdpZHRoOiAzMDBweDtcblx0XHRcdG92ZXJmbG93OiBzY3JvbGw7XG5cdFx0XHRwYWRkaW5nOiAxcmVtIDA7XG5cdFx0XHRsaXN0LXN0eWxlOiBub25lO1xuXG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdFx0dG9wOiAwO1xuXG5cdFx0XHQud3AtYmxvY2stcGFnZXMtbGlzdF9faXRlbSB7XG5cdFx0XHRcdCZfX2xpbmsge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmc6IC41cmVtIDFyZW07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8qKlxuICogMDEuIEhlYWRpbmdzXG4gKiAwMi4gV2VpZ2h0c1xuICogMDMuIFBhcmFncmFwaFxuICogMDQuIExpbmtcbiAqL1xuXG5cbi8vIDAxLiBIZWFkaW5nc1xuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuaDEsIGgyLCBoMywgaDUge1xuXHRmb250LWZhbWlseTogJGdpbG1lci1oZWF2eTtcbn1cblxuaDEud3AtYmxvY2stcG9zdC10aXRsZSB7XG5cdGZvbnQtc2l6ZTogbWFwLWdldCggJGhlYWRpbmctc2l6ZS1tYXAsIGgxICk7XG59XG5cbkBlYWNoICR0YWcsICRzaXplIGluICRoZWFkaW5nLXNpemUtbWFwIHtcblx0I3skdGFnfSB7XG5cdFx0Zm9udC1zaXplOiAkc2l6ZTtcblx0XHRsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0LW1hcCwgJHRhZyApO1xuXHR9XG59XG5cblxuLy8gMDIuIFdlaWdodHNcblxuQGVhY2ggJG5hbWUsICR3ZWlnaHQgaW4gJGZvbnQtd2VpZ2h0LW1hcCB7XG5cdC5mb250LXdlaWdodC0jeyRuYW1lfSB7XG5cdFx0Zm9udC1mYW1pbHk6ICR3ZWlnaHQ7XG5cdH1cbn1cblxuc3Ryb25nIHtcblx0Zm9udDoge1xuXHRcdGZhbWlseTogJGdpbG1lci1ib2xkO1xuXHRcdHdlaWdodDogNDAwO1xuXHR9O1xufVxuXG4uaGVhdnkge1xuXHRmb250LWZhbWlseTogJGdpbG1lci1oZWF2eTtcbn1cblxuXG4vLyAwMy4gUGFyYWdyYXBoXG5cbnAge1xuXHRmb250OiB7XG5cdFx0ZmFtaWx5OiAkZ2lsbWVyLXJlZ3VsYXI7XG5cdFx0c2l6ZTogMTZweDtcblx0fTtcblx0bGluZS1oZWlnaHQ6IG1hcC1nZXQoICRsaW5lLWhlaWdodC1tYXAsIHAgKTtcblxuXHQmLnNtYWxsLFxuXHRzbWFsbCB7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHQtbWFwLCBwc21hbGwgKTtcblx0fVxuXG5cdCYuY3RhIHtcblx0XHRmb250OiB7XG5cdFx0XHRmYW1pbHk6ICRnaWxtZXItaGVhdnk7XG5cdFx0XHRzaXplOiAxNHB4O1xuXHRcdH07XG5cdFx0bGluZS1oZWlnaHQ6IG1hcC1nZXQoICRsaW5lLWhlaWdodC1tYXAsIGN0YSApO1xuXHR9XG59XG5cblxuLy8gMDQuIExpbmtcblxuLmVudHJ5LWNvbnRlbnQgYSB7XG5cdGNvbG9yOiAkYmx1ZTtcblx0Zm9udDoge1xuXHRcdGZhbWlseTogJGdpbG1lci1oZWF2eTtcblx0XHRzaXplOiAxOHB4O1xuXHR9O1xuXHRsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0LW1hcCwgYSApO1xufVxuIiwiLnBvc3QtdHlwZS1wcm9wb3NhbC1wYWdlIGgxLmJsb2NrLWVkaXRvci1ibG9jay1saXN0X19ibG9jay5lZGl0b3ItcG9zdC10aXRsZS5lZGl0b3ItcG9zdC10aXRsZV9faW5wdXQucmljaC10ZXh0LndwLWJsb2NrLndwLWJsb2NrLXBvc3QtdGl0bGUge1xuICBmb250LXNpemU6IDI0cHghaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOmxlZnQ7XG4gIHdpZHRoOjEwMCU7XG59XG5cbi5wb3N0LXR5cGUtcHJvcG9zYWwtcGFnZSAjZWRpdG9yIGRpdi5lZGl0LXBvc3QtdmlzdWFsLWVkaXRvcl9fcG9zdC10aXRsZS13cmFwcGVyID4gaDEuYmxvY2stZWRpdG9yLWJsb2NrLWxpc3RfX2Jsb2NrIHtcbiAgZm9udC1zaXplOiAyNHB4IWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICB3aWR0aDoxMDAlO1xufVxuIiwiXG4uY2QtYWNjb3JkaW9uIHtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0d2lkdGg6IDMwMHB4O1xuXG5cdCZfX2l0ZW0ge1xuXHRcdG1hcmdpbjogMDtcblxuXHRcdGEsXG5cdFx0LmNkLWFjY29yZGlvbl9fbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOiAuMjVyZW0gMXJlbTtcblx0XHRcdGNvbG9yOiAkYmxhY2s7XG5cdFx0XHRmb250OiB7XG5cdFx0XHQgIGZhbWlseTogJGdpbG1lci1saWdodDtcblx0XHRcdCAgc2l6ZTogLjhyZW07XG5cdFx0XHR9O1xuXHRcdCAgXHRsZXR0ZXItc3BhY2luZzogLjA1cmVtO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0fVxuXG5cdFx0LmNkLWFjY29yZGlvbl9fbGFiZWwge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMS41cmVtO1xuXHRcdH1cblxuXHRcdCYtLWhhcy1jaGlsZHJlbiB7XG5cdFx0XHQuY2QtYWNjb3JkaW9uX19sYWJlbCB7XG5cdFx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRcdGNvbnRlbnQ6ICdcXDI1YmUnO1xuXG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdG1hcmdpbjogMCAuNXJlbSAwIDA7XG5cblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSguMjVyZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5jaGlsZHJlbiB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDJyZW07XG5cdFx0XHRcdHBhZGRpbmc6IDAgMCAwIC4yNXJlbTtcblx0XHRcdH1cblxuXHRcdFx0LmNkLWFjY29yZGlvbl9faW5wdXQge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0XHRcdCY6Y2hlY2tlZCB7XG5cdFx0XHRcdFx0fiAuY2QtYWNjb3JkaW9uX19sYWJlbCB7XG5cdFx0XHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC4yNXJlbSkgcm90YXRlKDE4MGRlZyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0fiAuY2hpbGRyZW4ge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUsXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHQ+IGEsXG5cdFx0XHQ+IC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcblx0XHRcdFx0YmFja2dyb3VuZDogcmdiYSgkYmx1ZSwgLjEpO1xuXHRcdFx0XHRjb2xvcjogJGJsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iXX0= */ +*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}.wp-element-button,a,button,input:focus,input[type=button],input[type=submit],textarea:focus{transition:all .2s ease-in-out}a,a:focus,a:hover,a:not(.wp-element-button){text-decoration-thickness:1px}b,strong{font-weight:var(--wp--custom--font-weight--medium)}mark{background:linear-gradient(90deg,var(--wp--preset--color--primary) 0,var(--wp--preset--color--primary) 100%);background-position:0 85%;background-repeat:repeat-x;background-size:100% 15%}.wp-block-calendar table caption,.wp-block-calendar table tbody{color:var(--wp--preset--color--contrast)}.wp-block-calendar table th{background-color:var(--wp--preset--color--contrast);color:var(--wp--preset--color--base)}.wp-block-calendar tbody td,.wp-block-calendar th{border:1px solid var(--wp--preset--color--contrast);padding:10px}:not(.wp-block-code)>code{background-color:var(--wp--preset--color--neutral);font-size:var(--wp--preset--font-size--small);padding:5px 8px}.wp-block-post-comments-form .comment-reply-title{margin-bottom:var(--wp--custom--spacing--gap)}.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments-form textarea{border-color:var(--wp--preset--color--contrast);padding:10px 15px}.wp-block-post-comments-form p:not(.form-submit){margin-bottom:20px}.wp-block-post-comments-form .comment-form-cookies-consent label{font-size:var(--wp--preset--font-size--x-small)}.is-style-no-disc{list-style-type:none;padding-left:0}.wp-block-navigation__responsive-container.is-menu-open{padding-bottom:30px;padding-top:30px}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{border:1px solid;padding:2px}.has-background .wp-block-navigation__responsive-container-open:focus,.has-background .wp-block-navigation__responsive-container-open:hover{color:var(--wp--preset--color--base)}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:var(--wp--preset--color--contrast);border:var(--wp--preset--color--contrast);color:var(--wp--preset--color--base);padding:10px}.wp-block-navigation :where(.wp-block-navigation__submenu-container) a{padding:2px 10px}.wp-block-separator.is-style-dots:before{font-family:inherit;font-size:var(--wp--preset--font-size--large);letter-spacing:10px;padding-left:10px}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots),.wp-block-separator:not(.is-style-dots){border-bottom:1px solid;border-top:none;height:1px}.wp-block-table.is-style-stripes{border-bottom:none}.wp-block-table table{border-collapse:collapse}.wp-block-table thead{border-bottom:3px solid var(--wp--preset--color--contrast)}.wp-block-table tfoot{border-top:3px solid var(--wp--preset--color--contrast)}.wp-block-table td,.wp-block-table th,.wp-block-table tr,.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th,.wp-block-table.is-style-stripes tr{border:1px solid var(--wp--preset--color--contrast)}.wp-block-table th{font-weight:var(--wp--custom--font-weight--regular)}.wp-block-table td,.wp-block-table th{padding:5px}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:var(--wp--preset--color--neutral)}.wp-block-search__input,input,select,textarea{background-color:var(--wp--preset--color--base);border:1px solid var(--wp--preset--color--contrast);border-radius:0;color:var(--wp--preset--color--contrast);font-family:var(--wp--preset--font-family--primary);font-size:var(--wp--preset--font-size--medium);font-weight:var(--wp--custom--font-weight--light);line-height:var(--wp--custom--line-height--body);padding:10px 20px;width:100%}input:focus,textarea:focus{background-color:var(--wp--preset--color--neutral);outline:none}input[type=checkbox],input[type=image],input[type=radio]{width:auto}input[type=button],input[type=email],input[type=search],input[type=submit],input[type=text],textarea{-webkit-appearance:none}::-moz-placeholder{color:var(--wp--preset--color--contrast);font-size:var(--wp--preset--font-size--small);opacity:.5}::placeholder{color:var(--wp--preset--color--contrast);font-size:var(--wp--preset--font-size--small);opacity:.5}@media only screen and (max-width:780px){.is-style-columns-reverse{flex-direction:column-reverse}}@media only screen and (min-width:800px){.wp-block-navigation-item.is-style-outline a{border:1px solid;padding:8px 15px}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:300px}.wp-block-pullquote.alignleft{margin-right:30px!important}.wp-block-pullquote.alignright{margin-left:30px!important}}.wp-block-post-title{max-width:clamp(80%,90vh,100%)}.has-eyebrow-font-size{font-family:Gilmer-Heavy,sans-serif;line-height:16px}ul.has-eyebrow-font-size{line-height:1.25em}ul.has-eyebrow-font-size li+li{margin-top:.375rem}.has-large-font-size{line-height:28px}.wp-block-post-terms [rel=tag]{font-family:Gilmer-Regular,sans-serif;font-size:14px;letter-spacing:.35px;line-height:1;text-decoration:none;white-space:nowrap}.wp-block-post-terms.taxonomy-lp_solution [rel=tag]{background:#fff;border-radius:5px;margin-right:12px;padding:5px 9px}.wp-block-post-terms.taxonomy-lp_solution .wp-block-post-terms__separator{display:none}.wp-block-button .wp-block-button__link{font-size:14px;letter-spacing:1.05px;line-height:16px;padding:1.375rem 1.5rem;text-transform:uppercase}.wp-block-button .wp-block-button__link:hover{text-decoration:none}.wp-block-button.is-style-fill .wp-block-button__link{background:#3fc1d0;border:2px solid #3fc1d0;color:#fff}.wp-block-button.is-style-fill .wp-block-button__link:hover{background:#fff;border-color:#fff;color:#3fc1d0}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color){background:var(--wp--preset--color--base);border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color):hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color{border-color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-base-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-main-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-primary-color:hover{background:var(--wp--preset--color--primary)!important;border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color){background:var(--wp--preset--color--main);border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color):hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color{border-color:var(--wp--preset--color--main)}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-base-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-main-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-primary-color:hover{background:var(--wp--preset--color--primary)!important;border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color){background:var(--wp--preset--color--primary);border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color):hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--primary)}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color{border-color:var(--wp--preset--color--primary)}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-base-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-main-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-primary-color:hover{background:var(--wp--preset--color--primary)!important;border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-outline .wp-block-button__link:hover{background:#fff;border-color:#fff}.wp-block-button.is-style-outline .wp-block-button__link.has-base-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main)}.wp-block-button.is-style-outline .wp-block-button__link.has-main-color:hover,.wp-block-button.is-style-outline .wp-block-button__link.has-primary-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base)}@media screen and (min-width:1024px){.wp-block-group.flex-auto{flex:1 1 auto}.wp-block-group.flex-sidebar{flex:0 0 400px}}@media screen and (max-width:1023px){.wp-block-group.medium-flex-wrap{flex-wrap:wrap!important}.wp-block-group.medium-flex-wrap.flex-sidebar{flex:0 0 100%}}.single-proposal .wp-site-blocks{min-height:100vh;padding-left:0}.single-proposal .wp-site-blocks .site-content{min-height:100vh;padding-bottom:0!important;padding-top:0!important}.single-proposal .wp-site-blocks .site-footer{margin:0}.single-proposal .site-content>.wp-block-page-list{background:#fafafa;list-style:none;min-height:100vh;overflow:scroll;padding:1rem 0;position:sticky;top:0;width:300px}.single-proposal .site-content>.wp-block-page-list .wp-block-pages-list__item__link{display:block;padding:.5rem 1rem}h1,h2,h3,h4,h5,h6{font-weight:400}h1,h2,h3,h5{font-family:Gilmer-Heavy,sans-serif}h1,h1.wp-block-post-title{font-size:clamp(50px,8vw,90px)}h1{line-height:1.125em}h2{font-size:clamp(36px,7vw,48px)}h2,h3{line-height:1.2em}h3{font-size:clamp(30px,6vw,40px)}h4{font-size:clamp(24px,5vw,32px);line-height:1.3125em}h5{font-size:clamp(20px,4vw,24px);line-height:1.4em}h6{font-size:16px;line-height:1.375em}.font-weight-light{font-family:Gilmer-Light,sans-serif}.font-weight-regular{font-family:Gilmer-Regular,sans-serif}.font-weight-medium{font-family:Gilmer-Medium,sans-serif}.font-weight-bold{font-family:Gilmer-Bold,sans-serif}.font-weight-heavy{font-family:Gilmer-Heavy,sans-serif}strong{font-family:Gilmer-Bold,sans-serif;font-weight:400}.heavy{font-family:Gilmer-Heavy,sans-serif}p{font-family:Gilmer-Regular,sans-serif;font-size:16px;line-height:24px}p small,p.small{font-size:14px;line-height:18px}p.cta{font-size:14px}.entry-content a,p.cta{font-family:Gilmer-Heavy,sans-serif;line-height:28px}.entry-content a{color:#3fc1d0;font-size:18px}.post-type-proposal-page #editor div.edit-post-visual-editor__post-title-wrapper>h1.block-editor-block-list__block,.post-type-proposal-page h1.block-editor-block-list__block.editor-post-title.editor-post-title__input.rich-text.wp-block.wp-block-post-title{font-size:24px!important;text-align:left;width:100%}.cd-accordion{list-style:none;width:300px}.cd-accordion__item{margin:0}.cd-accordion__item .cd-accordion__label,.cd-accordion__item a{color:#001e1e;display:block;font-family:Gilmer-Light,sans-serif;font-size:.8rem;letter-spacing:.05rem;padding:.25rem 1rem;position:relative;text-decoration:none}.cd-accordion__item .cd-accordion__label{padding-right:1.5rem}.cd-accordion__item--has-children .cd-accordion__label:after{content:"▾";display:inline-block;margin:0 .5rem 0 0;position:absolute;right:0;top:0;transform:translateY(.25rem)}.cd-accordion__item--has-children .children{display:none;list-style:none;margin:0 0 2rem;padding:0 0 0 .25rem}.cd-accordion__item--has-children .cd-accordion__input{display:none}.cd-accordion__item--has-children .cd-accordion__input:checked~.cd-accordion__label:after{transform:translateY(.25rem) rotate(180deg)}.cd-accordion__item--has-children .cd-accordion__input:checked~.children{display:block}.cd-accordion__item.active>.cd-accordion__label,.cd-accordion__item.active>a,.cd-accordion__item:hover>.cd-accordion__label,.cd-accordion__item:hover>a{background:rgba(63,193,208,.1);color:#3fc1d0} \ No newline at end of file diff --git a/fonts/OFL.txt b/fonts/OFL.txt deleted file mode 100644 index 723cd447..00000000 --- a/fonts/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2021 The Outfit Project Authors (https://github.com/Outfitio/Outfit-Fonts) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -https://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/Outfit-Variable.woff2 b/fonts/Outfit-Variable.woff2 deleted file mode 100644 index ff1bdd13..00000000 Binary files a/fonts/Outfit-Variable.woff2 and /dev/null differ diff --git a/fonts/README.txt b/fonts/README.txt deleted file mode 100644 index 702665a2..00000000 --- a/fonts/README.txt +++ /dev/null @@ -1,71 +0,0 @@ -Outfit Variable Font -==================== - -This download contains Outfit as both a variable font and static fonts. - -Outfit is a variable font with this axis: - wght - -This means all the styles are contained in a single file: - Outfit-VariableFont_wght.ttf - -If your app fully supports variable fonts, you can now pick intermediate styles -that aren’t available as static fonts. Not all apps support variable fonts, and -in those cases you can use the static font files for Outfit: - static/Outfit-Thin.ttf - static/Outfit-ExtraLight.ttf - static/Outfit-Light.ttf - static/Outfit-Regular.ttf - static/Outfit-Medium.ttf - static/Outfit-SemiBold.ttf - static/Outfit-Bold.ttf - static/Outfit-ExtraBold.ttf - static/Outfit-Black.ttf - -Get started ------------ - -1. Install the font files you want to use - -2. Use your app's font picker to view the font family and all the -available styles - -Learn more about variable fonts -------------------------------- - - https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts - https://variablefonts.typenetwork.com - https://medium.com/variable-fonts - -In desktop apps - - https://theblog.adobe.com/can-variable-fonts-illustrator-cc - https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts - -Online - - https://developers.google.com/fonts/docs/getting_started - https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide - https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts - -Installing fonts - - MacOS: https://support.apple.com/en-us/HT201749 - Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux - Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows - -Android Apps - - https://developers.google.com/fonts/docs/android - https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts - -License -------- -Please read the full license text (OFL.txt) to understand the permissions, -restrictions and requirements for usage, redistribution, and modification. - -You can use them in your products & projects – print or digital, -commercial or otherwise. - -This isn't legal advice, please consider consulting a lawyer and see the full -license for all details. diff --git a/functions.php b/functions.php index 9dfe73f4..724ae7ce 100644 --- a/functions.php +++ b/functions.php @@ -1,15 +1,34 @@ get( 'Version' ) ); + + +add_action('after_setup_theme', 'ash_setup'); + +add_action('wp_enqueue_scripts', 'ash_enqueue_style_sheet'); + +function ash_enqueue_style_sheet() +{ + wp_enqueue_style('ash', get_template_directory_uri() . '/css/ash.css', array(), wp_get_theme()->get('Version')); } /** @@ -50,84 +76,124 @@ function frost_enqueue_style_sheet() { * * @since 0.9.2 */ -function frost_register_block_styles() { +function ash_register_block_styles() +{ $block_styles = array( 'core/button' => array( - 'fill-base' => __( 'Fill Base', 'frost' ), - 'outline-base' => __( 'Outline Base', 'frost' ), + 'fill-base' => __('Fill Base', 'ash'), + 'outline-base' => __('Outline Base', 'ash'), ), 'core/columns' => array( - 'columns-reverse' => __( 'Reverse', 'frost' ), + 'columns-reverse' => __('Reverse', 'ash'), ), 'core/group' => array( - 'shadow' => __( 'Shadow', 'frost' ), - 'shadow-solid' => __( 'Shadow Solid', 'frost' ), + 'shadow' => __('Shadow', 'ash'), + 'shadow-solid' => __('Solid', 'ash'), + ), + 'core/image' => array( + 'shadow-light' => __('Shadow', 'ash'), + 'shadow-solid' => __('Solid', 'ash'), ), - 'core/list' => array( - 'no-disc' => __( 'No Disc', 'frost' ), + 'core/list' => array( + 'no-disc' => __('No Disc', 'ash'), ), 'core/navigation-link' => array( - 'outline' => __( 'Outline', 'frost' ), + 'outline' => __('Outline', 'ash'), ), 'core/social-links' => array( - 'outline' => __( 'Outline', 'frost' ), + 'outline' => __('Outline', 'ash'), + 'core/quote' => array( + 'shadow-light' => __( 'Shadow', 'ash' ), + 'shadow-solid' => __( 'Solid', 'ash' ), + ), + 'core/social-links' => array( + 'outline' => __( 'Outline', 'ash' ), ), ); +} - foreach ( $block_styles as $block => $styles ) { - foreach ( $styles as $style_name => $style_label ) { - register_block_style( - $block, - array( - 'name' => $style_name, - 'label' => $style_label, - ) - ); - } - } +// Require Composer autoloader if it exists. +if (file_exists(__DIR__ . '/vendor/autoload.php')) { + require_once __DIR__ . '/vendor/autoload.php'; } -add_action( 'init', 'frost_register_block_styles' ); +add_action('init', 'ash_register_block_styles'); /** * Registers block categories, and type. * * @since 0.9.2 */ -function frost_register_block_pattern_categories() { +function ash_register_block_pattern_categories() +{ /* Functionality specific to the Block Pattern Explorer plugin. */ - if ( function_exists( 'register_block_pattern_category_type' ) ) { - register_block_pattern_category_type( 'frost', array( 'label' => __( 'Frost', 'frost' ) ) ); + if (function_exists('register_block_pattern_category_type')) { + register_block_pattern_category_type('ash', array('label' => __('Ash', 'ash'))); } + register_block_pattern_category( + 'ash-page', + array( + 'label' => __('Page', 'ash'), + 'description' => __('Create a full page with multiple patterns that are grouped together.', 'ash'), + ) + ); + register_block_pattern_category( + 'frost-pricing', + array( + 'label' => __('Pricing', 'ash'), + 'description' => __('Compare features for your digital products or service plans.', 'ash'), + ) + ); + $block_pattern_categories = array( - 'frost-footer' => array( - 'label' => __( 'Footer', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-footer' => array( + 'label' => __('Footer', 'ash'), + 'categoryTypes' => array('ash'), + ), + 'ash-general' => array( + 'label' => __('General', 'ash'), + 'categoryTypes' => array('ash'), ), - 'frost-general' => array( - 'label' => __( 'General', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-header' => array( + 'label' => __('Header', 'ash'), + 'categoryTypes' => array('ash'), ), - 'frost-header' => array( - 'label' => __( 'Header', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-page' => array( + 'label' => __('Page', 'ash'), + 'categoryTypes' => array('ash'), ), - 'frost-page' => array( - 'label' => __( 'Page', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-query' => array( + 'label' => __('Query', 'ash'), + 'categoryTypes' => array('ash'), ), - 'frost-query' => array( - 'label' => __( 'Query', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-proposals' => array( + 'label' => __('Proposals', 'ash'), + 'categoryTypes' => array('ash'), ), - 'frost-proposals' => array( - 'label' => __( 'Proposals', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'core/quote' => array( + 'shadow-light' => __('Shadow', 'ash'), + 'shadow-solid' => __('Solid', 'ash'), + ), + 'core/social-links' => array( + 'outline' => __('Outline', 'ash'), ), ); - foreach ( $block_pattern_categories as $name => $properties ) { - register_block_pattern_category( $name, $properties ); + foreach ($block_pattern_categories as $name => $properties) { + register_block_pattern_category($name, $properties); } } -add_action( 'init', 'frost_register_block_pattern_categories', 9 ); + +add_action('init', 'ash_register_block_pattern_categories', 9); + +if (!function_exists('wp_body_open')) { + do_action('wp_body_open'); +} + +// Kick everything off when plugins are loaded. +try { + Ash\Core\setup(); + Ash\Blocks\setup(); +} catch (Exception $e) { + wp_die(esc_html($e->getMessage())); +} diff --git a/includes/blocks.php b/includes/blocks.php new file mode 100644 index 00000000..20c5e8a5 --- /dev/null +++ b/includes/blocks.php @@ -0,0 +1,116 @@ + array( + 'fill-base' => __( 'Fill Base', 'ash' ), + 'outline-base' => __( 'Outline Base', 'ash' ), + ), + 'core/columns' => array( + 'columns-reverse' => __( 'Reverse', 'ash' ), + ), + 'core/group' => array( + 'shadow' => __( 'Shadow', 'ash' ), + 'shadow-solid' => __( 'Shadow Solid', 'ash' ), + ), + 'core/list' => array( + 'no-disc' => __( 'No Disc', 'ash' ), + ), + 'core/navigation-link' => array( + 'outline' => __( 'Outline', 'ash' ), + ), + 'core/social-links' => array( + 'outline' => __( 'Outline', 'ash' ), + ), + ); + + foreach ( $block_styles as $block => $styles ) { + foreach ( $styles as $style_name => $style_label ) { + register_block_style( + $block, + array( + 'name' => $style_name, + 'label' => $style_label, + ) + ); + } + } +} + +/** + * Registers block categories, and type. + * + * @since 0.9.2 + */ +function register_block_pattern_categories() { + /* Functionality specific to the Block Pattern Explorer plugin. */ + if ( function_exists( 'register_block_pattern_category_type' ) ) { + register_block_pattern_category_type( 'frost', array( 'label' => __( 'Ash', 'ash' ) ) ); + } + + $block_pattern_categories = array( + 'frost-footer' => array( + 'label' => __( 'Ash', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-general' => array( + 'label' => __( 'General', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-header' => array( + 'label' => __( 'Header', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-page' => array( + 'label' => __( 'Page', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-query' => array( + 'label' => __( 'Query', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-proposals' => array( + 'label' => __( 'Proposals', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + ); + + foreach ( $block_pattern_categories as $name => $properties ) { + register_block_pattern_category( $name, $properties ); + } + +} diff --git a/includes/classes/SVG_Icons.php b/includes/classes/SVG_Icons.php new file mode 100644 index 00000000..b0c43e4c --- /dev/null +++ b/includes/classes/SVG_Icons.php @@ -0,0 +1,246 @@ + source on its own array key, without adding either + * the `width` or `height` attributes, since these are added dynamically, + * before rendering the SVG code. + * + * All icons are assumed to have equal width and height, hence the option + * to only specify a `$size` parameter in the svg methods. + */ +class SVG_Icons { + + /** + * User Interface icons – svg sources. + * + * @access protected + * + * @since 1.0 + * + * @var array + */ + protected static $icons = array( + 'arrow_right' => '', + 'arrow_left' => '', + 'close' => '', + 'menu' => '', + 'plus' => '', + 'minus' => '', + 'fish' => '', + 'footer_email' => '', + 'footer_location' => '', + 'footer_support' => '', + 'header_location' => '', + 'header_search' => '', + 'header_support' => '', + ); + + /** + * Social Icons – svg sources. + * + * @access protected + * + * @since 1.1.0 + * + * @var array + */ + protected static $social_icons = [ + '500px' => '', + 'amazon' => '', + 'bandcamp' => '', + 'behance' => '', + 'codepen' => '', + 'deviantart' => '', + 'dribbble' => '', + 'dropbox' => '', + 'etsy' => '', + 'facebook' => '', + 'feed' => '', + 'flickr' => '', + 'foursquare' => '', + 'goodreads' => '', + 'google' => '', + 'github' => '', + 'instagram' => '', + 'lastfm' => '', + 'linkedin' => '', + 'mail' => '', + 'mastodon' => '', + 'medium' => '', + 'meetup' => '', + 'pinterest' => '', + 'pocket' => '', + 'reddit' => '', + 'skype' => '', + 'snapchat' => '', + 'soundcloud' => '', + 'spotify' => '', + 'tumblr' => '', + 'twitch' => '', + 'twitter' => '', + 'vimeo' => '', + 'vk' => '', + 'wordpress' => '', + 'yelp' => '', + 'youtube' => '', + ]; + + /** + * Social Icons – domain mappings. + * + * By default, each Icon ID is matched against a .com TLD. To override this behavior, + * specify all the domains it covers (including the .com TLD too, if applicable). + * + * @since 1.1.0 + * + * @var array + */ + protected static $social_icons_map = [ + 'amazon' => [ + 'amazon.com', + 'amazon.cn', + 'amazon.in', + 'amazon.fr', + 'amazon.de', + 'amazon.it', + 'amazon.nl', + 'amazon.es', + 'amazon.co', + 'amazon.ca', + ], + 'behance' => [ + 'behance.net', + ], + 'codepen' => [ + 'codepen.io', + ], + 'facebook' => [ + 'facebook.com', + 'fb.me', + ], + 'feed' => [ + 'feed', + ], + 'lastfm' => [ + 'last.fm', + ], + 'mail' => [ + 'mailto:', + ], + 'pocket' => [ + 'getpocket.com', + ], + 'twitch' => [ + 'twitch.tv', + ], + 'wordpress' => [ + 'wordpress.com', + 'wordpress.org', + ], + ]; + + /** + * Gets the SVG code for a given icon. + * + * @param string $group the icon group. + * @param string $icon The icon. + * @param int $size The icon-size in pixels. + * + * @return string + * @since 1.1.0 + */ + public static function get_svg( string $group, string $icon, int $size ): string { + + if ( 'ui' === $group ) { + $arr = self::$icons; + } elseif ( 'social' === $group ) { + $arr = self::$social_icons; + } else { + $arr = array(); + } + + /** + * Filters the array of icons. + * + * The dynamic portion of the hook name, `$group`, refers to + * the name of the group of icons, either "ui" or "social". + * + * @since 1.1.0 + * + * @param array $arr Array of icons. + */ + $arr = apply_filters( "ashl_svg_icons_{$group}", $arr ); + + $svg = ''; + if ( array_key_exists( $icon, $arr ) ) { + $repl = sprintf( ''; + } + } + return null; + } +} diff --git a/includes/core.php b/includes/core.php new file mode 100644 index 00000000..17123217 --- /dev/null +++ b/includes/core.php @@ -0,0 +1,219 @@ +get( 'Version' ), true ); +} + +/** + * Enqueue scripts for front-end. + * + * @return void + */ +function styles() { + wp_enqueue_style( 'ash', get_stylesheet_directory_uri() . '/css/ash.css', array(), wp_get_theme()->get( 'Version' ) ); +} + +/** + * Enqueue scripts for admin + * + * @return void + */ +function admin_scripts() { + wp_enqueue_style( 'ash-admin-css', get_stylesheet_directory_uri() . '/css/admin.css', array(), wp_get_theme()->get( 'Version' ) ); +} + +/** + * Handles JavaScript detection. + * + * Adds a `js` class to the root `` element when JavaScript is detected. + * + * @since 1.1.0 + * + * @return void + */ +function js_detection() { + echo "\n"; +} + + +/** + * Add async/defer attributes to enqueued scripts that have the specified script_execution flag. + * + * @link https://core.trac.wordpress.org/ticket/12009 + * @param string $tag The script tag. + * @param string $handle The script handle. + * @return string + */ +function script_loader_tag( $tag, $handle ) { + $script_execution = wp_scripts()->get_data( $handle, 'script_execution' ); + + if ( ! $script_execution ) { + return $tag; + } + + if ( 'async' !== $script_execution && 'defer' !== $script_execution ) { + return $tag; + } + + // Abort adding async/defer for scripts that have this script as a dependency. _doing_it_wrong()? + foreach ( wp_scripts()->registered as $script ) { + if ( in_array( $handle, $script->deps, true ) ) { + return $tag; + } + } + + // Add the attribute if it hasn't already been added. + if ( ! preg_match( ":\s$script_execution(=|>|\s):", $tag ) ) { + $tag = preg_replace( ':(?=>):', " $script_execution", $tag, 1 ); + } + + return $tag; + +} + +/** + * Appends a link tag used to add a manifest.json to the head + * + * @return void + */ +function add_manifest() { + echo ""; +} + +function jetpack_scroll_settings() { + + $n = function ( $function ) { + return __NAMESPACE__ . "\\$function"; + }; + + add_theme_support( + 'infinite-scroll', + array( + 'container' => 'infinite', + 'type' => 'click', + 'footer' => false, + 'wrapper' => false, + 'render' => $n( 'infinite_post_render' ), + ) + ); + +} + +function jetpack_scroll_button( $settings ) { + $settings['text'] = esc_html__( 'Load More', 'ash' ); + return $settings; +} + + +/** + * Infinite Scroll render function + * + * @since 1.1.0 + * + * @return void + */ +function infinite_post_render() { + + while ( have_posts() ) { + the_post(); + + get_template_part( 'partials/loop' ); + } +} diff --git a/includes/utilities.php b/includes/utilities.php new file mode 100644 index 00000000..5f1ee8be --- /dev/null +++ b/includes/utilities.php @@ -0,0 +1,381 @@ + 'product', + 'tax_query' => array( + 'relation' => 'AND', + array( + 'taxonomy' => 'product_type', + 'field' => 'slug', + 'terms' => 'grouped', + ), + array( + 'taxonomy' => 'product_cat', + 'field' => 'term_id', + 'terms' => get_queried_object_id(), + ), + ), + ); + + $grouped_products = new \WP_Query( $grouped_products_args ); + + if ( $grouped_products->have_posts() ) { + return $grouped_products; + } else { + return ''; + } +} + +/** + * Display related posts and videos slider from a specified category. + * + * @param int $category_id + * @param int $count + * + * @return void|\WP_Query + * @since Fluval 1.0 + */ +function related_videos_articles( int $term_id = 0, int $count = 6 ) { + global $post; + + if ( empty( $post ) ) { + return; + } + + $current_post = $post->ID; + + if ( ! $term_id ) { + $term_id = get_primary_term_id(); + } + + $related_posts_args = array( + 'post_type' => 'post', + 'posts_per_page' => $count, + 'tax_query' => array( + array( + 'taxonomy' => 'category', + 'field' => 'term_id', + 'terms' => $term_id, + ), + ), + 'post__not_in' => array( $current_post ), + ); + + $related_posts = new \WP_Query( $related_posts_args ); + + if ( $related_posts->have_posts() ) { + get_template_part( 'partials/swiper/related-slider', null, array( 'posts' => $related_posts->posts ) ); + } +} + +/** + * Get the primary term ID of a given post. + * + * @param string $category + * @param int $post_id + * + * @return bool|int + * @since Fluval 1.0 + */ +function get_primary_term_id( string $category = 'category', int $post_id = 0 ) { + if ( ! $post_id ) { + global $post; + $post_id = $post->ID; + } + + if ( ! $post_id ) { + return false; + } + + $primary_term_id = false; + + // Attempt to get ID of the primary term from Yoast + if ( function_exists( 'yoast_get_primary_term_id' ) ) { + $primary_term_id = yoast_get_primary_term_id( $category, (int) $post_id ); + } + + if ( ! $primary_term_id || 1 === $primary_term_id ) { + // Yoast didnt have what we want, try get all the categories + $post_terms = get_the_terms( $post_id, $category ); + + if ( ! is_wp_error( $post_terms ) && false !== $post_terms ) { + // Grab the first term to return + $primary_term_id = $post_terms[0]->term_id; + + // Dont return Uncategorized + if ( 1 === $primary_term_id ) { + // Grab the next or reset the return value to false + if ( isset( $post_terms[1] ) ) { + $primary_term_id = $post_terms[1]->term_id; + } else { + $primary_term_id = false; + } + } + } + } + + return $primary_term_id; +} + +/** + * Get the primary term name of a given post. + * + * @param string $category + * @param int $post_id + * + * @return mixed + * @since Fluval 1.0 + */ +function get_primary_term_name( string $category = 'category', int $post_id = 0 ) { + $primary_term_id = get_primary_term_id( $category, $post_id ); + + if ( $primary_term_id ) { + $primary_term = get_term( $primary_term_id ); + $primary_term = $primary_term->name; + + return '' . $primary_term . ''; + } else { + return ''; + } +} + + +function get_paginated_links( $prev_text = '«', $next_text = '»' ) { + + global $wp_query; + + $big = 999999999; // Need an unlikely integer. + $pagination = ''; + $current = max( 1, get_query_var( 'paged' ) ); + + $pages = paginate_links( + array( + 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), + 'format' => '?paged=%#%', + 'current' => $current, + 'total' => $wp_query->max_num_pages, + 'type' => 'array', + 'prev_next' => true, + 'prev_text' => esc_html( $prev_text ), + 'next_text' => esc_html( $next_text ), + ) + ); + + if ( is_array( $pages ) ) { + $paged = ( get_query_var( 'paged' ) === 0 ) ? 1 : get_query_var( 'paged' ); + + $pagination .= '
    '; + + $start_page = ( 1 === $current ) ? 1 : 0; // Need to offset if using prev_text / next_text. + $page_count = $start_page; + + foreach ( $pages as $page ) { + $pagination .= '$page"; + $page_count ++; + } + + $pagination .= '
'; + } + + return $pagination; +} + +function fluval_cart_link() { + $off_canvas_trigger = ( ! is_cart() && ! is_checkout() ) ? 'off-canvas-trigger' : ''; + ?> + + title=""> + + + %d)', 'fluval' ), wp_kses_data( WC()->cart->get_cart_contents_count() ) ); ?>
+ + ID; + } + + if ( $duration = get_post_meta( $post_id, 'video_duration', true ) ) { + return $duration; + } + + $google_feed = wp_remote_get( "https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$videoID&key=" . YT_KEY ); + + if ( is_wp_error( $google_feed ) ) { + return ''; + } + + $video_duration = json_decode( wp_remote_retrieve_body( $google_feed ), true ); + + // If no duration can be found in the json die early. + if ( empty( $video_duration ) ) { + return ''; + } + + foreach ( $video_duration['items'] as $vidTime ) { + $video_duration = $vidTime['contentDetails']['duration']; + } + + if ( is_string( $video_duration ) ) { + preg_match_all( '/(\d+)/', $video_duration, $parts ); + } + + if ( empty( $parts ) ) { + return ''; + } + + $duration_parts = $parts[0]; + $duration_parts = array_filter( $duration_parts ); + + if ( $duration_parts[1] < 10 ) { + $duration_parts[1] = '0' . $duration_parts[1]; + } + + $duration = implode( ':', $duration_parts ); + + add_post_meta( $post_id, 'video_duration', $duration ); + + return $duration; + +} + +/** + * Get the product images for use on PDP primarily. + * + * @param \WC_Product|null $product The WooCommerce Product. + * + * @return array + */ +function fluval_get_products_images( $product = null ) { + + if ( ! $product ) { + global $product; + } + + $image_ids = array(); + $variations = array(); + + if ( ! $product ) { + return $image_ids; + } + + $attachment_ids = $product->get_gallery_image_ids(); + + if ( $product->is_type( 'variable' ) ) { + $variations = $product->get_available_variations(); + } + + if ( ! empty( wp_get_attachment_image( $product->get_image_id() ) ) ) { + $default_img_id = $product->get_image_id(); + $image_ids[ $default_img_id ] = 'default'; + } + + if ( ! empty( $variations ) ) { + foreach ( $variations as $variation ) { + $attribute_tag = array_key_first( $variation['attributes'] ); + + if ( empty( $attribute_tag ) ) { + continue; + } + + $variation_name = $variation['attributes'][ $attribute_tag ]; + + // If no label fall back to the key? + if ( empty( $variation_name ) ) { + $variation_name = $attribute_tag; + } + + $variation_image = $variation['image_id']; + + // Don't show hidden variations. + if ( $variation['variation_is_visible'] !== true ) { + continue; + } + + if ( array_key_exists( $variation_image, $image_ids ) ) { + $image_ids[ $variation_image ] = $image_ids[ $variation_image ] . ' img-for-' . $variation_name; + } else { + $image_ids[ $variation_image ] = 'img-for-' . $variation_name; + } + } + } + + foreach ( $attachment_ids as $attachment_id ) { + if ( ! array_key_exists( $attachment_id, $image_ids ) ) { + $image_ids[ $attachment_id ] = 'attachment'; + } + } + + return $image_ids; + +} diff --git a/js/ash.js b/js/ash.js deleted file mode 100644 index 193765b6..00000000 --- a/js/ash.js +++ /dev/null @@ -1,8 +0,0 @@ -/******/ (function() { // webpackBootstrap -var __webpack_exports__ = {}; -/*!**************************!*\ - !*** ./assets/js/ash.js ***! - \**************************/ - -/******/ })() -; \ No newline at end of file diff --git a/js/core.js b/js/core.js new file mode 100644 index 00000000..e0e76bf9 --- /dev/null +++ b/js/core.js @@ -0,0 +1 @@ +(function(){var __webpack_modules__={918:function(){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTE4LmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGxpbmNocGluL2FzaC8uL2Fzc2V0cy9qcy9hc2guanM/ZGNiMSJdLCJzb3VyY2VzQ29udGVudCI6WyIiXSwibWFwcGluZ3MiOiIifQ==\n//# sourceURL=webpack-internal:///918\n")}},__webpack_exports__={};__webpack_modules__[918]()})(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a734454f..cc0ee309 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "css-minimizer-webpack-plugin": "^5.0.0", "husky": "^8.0.3", "mini-css-extract-plugin": "^2.7.5", - "postcss": "^8.4.23", + "postcss": "^8.4.31", "postcss-loader": "^7.2.4", "resolve-url-loader": "^5.0.0", "sass": "^1.62.1", @@ -53,12 +53,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -122,14 +123,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -234,9 +235,10 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -253,24 +255,25 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -399,29 +402,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -466,22 +470,24 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1769,34 +1775,34 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", - "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.4", - "@babel/types": "^7.21.4", - "debug": "^4.1.0", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1804,13 +1810,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", - "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2994,13 +3000,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -3015,9 +3022,10 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3038,13 +3046,13 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -6200,13 +6208,13 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -6214,7 +6222,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -6483,8 +6491,9 @@ }, "node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -6496,8 +6505,9 @@ }, "node_modules/chalk/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -6507,29 +6517,33 @@ }, "node_modules/chalk/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/chalk/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/chalk/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/chalk/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -7037,9 +7051,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -9899,17 +9913,17 @@ "dev": true }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -10360,9 +10374,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -15198,9 +15212,9 @@ } }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -16116,9 +16130,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -18163,9 +18177,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -18916,9 +18930,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "dependencies": { "colorette": "^2.0.10", @@ -19251,9 +19265,9 @@ "license": "MIT" }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" diff --git a/package.json b/package.json old mode 100755 new mode 100644 index cfb55d54..a3c22345 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "css-minimizer-webpack-plugin": "^5.0.0", "husky": "^8.0.3", "mini-css-extract-plugin": "^2.7.5", - "postcss": "^8.4.23", + "postcss": "^8.4.31", "postcss-loader": "^7.2.4", "resolve-url-loader": "^5.0.0", "sass": "^1.62.1", @@ -28,10 +28,10 @@ }, "repository": { "type": "git", - "url": "https://github.com/linchpin/linchpin-mmxxiii.git" + "url": "https://github.com/linchpin/ash.git" }, "bugs": { - "url": "https://github.com/linchpin/linchpin-mmxxiii/issues", + "url": "https://github.com/linchpin/ash/issues", "email": "dev@linchpin.com" }, "engines": { diff --git a/parts/comments.html b/parts/comments.html deleted file mode 100644 index 65d5484b..00000000 --- a/parts/comments.html +++ /dev/null @@ -1,43 +0,0 @@ - -
- -
- - -
- - -
- -
- -
- - -
- - -
- - -
- - - -
- -
- - -
- - - - - - - -
- -
- \ No newline at end of file diff --git a/parts/footer.html b/parts/footer.html index bbf4643c..88a359ce 100644 --- a/parts/footer.html +++ b/parts/footer.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/parts/header.html b/parts/header.html index c6cfbb62..50c2e5bd 100644 --- a/parts/header.html +++ b/parts/header.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/patterns/404.php b/patterns/404.php index 77aa1a00..c3d743ab 100644 --- a/patterns/404.php +++ b/patterns/404.php @@ -1,14 +1,14 @@ -

+

-

+

diff --git a/patterns/author-box-dark.php b/patterns/author-box-dark.php new file mode 100644 index 00000000..e98a273c --- /dev/null +++ b/patterns/author-box-dark.php @@ -0,0 +1,17 @@ + + + + diff --git a/patterns/author-box.php b/patterns/author-box.php new file mode 100644 index 00000000..86fdfbd1 --- /dev/null +++ b/patterns/author-box.php @@ -0,0 +1,17 @@ + + +
+ + + + +
+ diff --git a/patterns/boxes-three-dark.php b/patterns/boxes-three-dark.php new file mode 100644 index 00000000..cd0bf5aa --- /dev/null +++ b/patterns/boxes-three-dark.php @@ -0,0 +1,59 @@ + + +
+
+
+

+ + +

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

+ + +

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

+ + +

+ + +
+ + +
+ +
+ +
+ +
+ diff --git a/patterns/boxes-three.php b/patterns/boxes-three.php new file mode 100644 index 00000000..cabfe9f1 --- /dev/null +++ b/patterns/boxes-three.php @@ -0,0 +1,59 @@ + + +
+
+
+

+ + +

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

+ + +

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

+ + +

+ + +
+
+ +
+ +
+ +
+ +
+ diff --git a/patterns/boxes-two-dark.php b/patterns/boxes-two-dark.php new file mode 100644 index 00000000..42c72003 --- /dev/null +++ b/patterns/boxes-two-dark.php @@ -0,0 +1,44 @@ + + +
+
+
+

+ + +

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

+ + +

+ + +
+
+ +
+ +
+ +
+ +
+ diff --git a/patterns/boxes-two.php b/patterns/boxes-two.php new file mode 100644 index 00000000..eda0291b --- /dev/null +++ b/patterns/boxes-two.php @@ -0,0 +1,44 @@ + + +
+
+
+

+ + +

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

+ + +

+ + +
+
+ +
+ +
+ +
+ +
+ diff --git a/patterns/comments.php b/patterns/comments.php new file mode 100644 index 00000000..1c5c4daa --- /dev/null +++ b/patterns/comments.php @@ -0,0 +1,51 @@ + + +
+ +
+

+ + +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ +
+ + + +
+ + +
+ + + + + + + +
+ +
+ diff --git a/patterns/general-cta-button-contrast-background.php b/patterns/cta-button-dark.php similarity index 86% rename from patterns/general-cta-button-contrast-background.php rename to patterns/cta-button-dark.php index 83e354b5..83fdeeef 100644 --- a/patterns/general-cta-button-contrast-background.php +++ b/patterns/cta-button-dark.php @@ -1,17 +1,17 @@
-

+

-
+
diff --git a/patterns/general-cta-button.php b/patterns/cta-button.php similarity index 87% rename from patterns/general-cta-button.php rename to patterns/cta-button.php index cf7179fc..cd13fed0 100644 --- a/patterns/general-cta-button.php +++ b/patterns/cta-button.php @@ -1,17 +1,17 @@
-

+

-
+
diff --git a/patterns/general-cta-stacked-contrast-background.php b/patterns/cta-stacked-dark.php similarity index 87% rename from patterns/general-cta-stacked-contrast-background.php rename to patterns/cta-stacked-dark.php index 821d0d5e..ee6dbfb4 100644 --- a/patterns/general-cta-stacked-contrast-background.php +++ b/patterns/cta-stacked-dark.php @@ -1,21 +1,21 @@
-

+

-

+

-
+
diff --git a/patterns/general-cta-stacked.php b/patterns/cta-stacked.php similarity index 88% rename from patterns/general-cta-stacked.php rename to patterns/cta-stacked.php index 4ff7517b..9da201b8 100644 --- a/patterns/general-cta-stacked.php +++ b/patterns/cta-stacked.php @@ -1,21 +1,21 @@
-

+

-

+

-
+
diff --git a/patterns/footer-default-contrast-background.php b/patterns/footer-default-contrast-background.php deleted file mode 100644 index 82dad959..00000000 --- a/patterns/footer-default-contrast-background.php +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/patterns/footer-default-dark.php b/patterns/footer-default-dark.php new file mode 100644 index 00000000..10b31b6b --- /dev/null +++ b/patterns/footer-default-dark.php @@ -0,0 +1,18 @@ + + + + diff --git a/patterns/footer-default.php b/patterns/footer-default.php index 037f195a..3d16d172 100644 --- a/patterns/footer-default.php +++ b/patterns/footer-default.php @@ -1,13 +1,13 @@ - -
+ +

© Contact Us

diff --git a/patterns/footer-mega-contrast-background.php b/patterns/footer-mega-dark.php similarity index 64% rename from patterns/footer-mega-contrast-background.php rename to patterns/footer-mega-dark.php index eba906a5..19ea0818 100644 --- a/patterns/footer-mega-contrast-background.php +++ b/patterns/footer-mega-dark.php @@ -1,89 +1,89 @@ - - @@ -60,7 +60,7 @@

-

$195/yr.

+

@@ -107,7 +107,7 @@

-

$495/yr.

+

diff --git a/patterns/general-pricing-two-columns-contrast-background.php b/patterns/pricing-two-columns-dark.php similarity index 97% rename from patterns/general-pricing-two-columns-contrast-background.php rename to patterns/pricing-two-columns-dark.php index 5dd68899..c3dd503d 100644 --- a/patterns/general-pricing-two-columns-contrast-background.php +++ b/patterns/pricing-two-columns-dark.php @@ -1,8 +1,8 @@ @@ -13,7 +13,7 @@

-

$95/yr.

+

@@ -60,7 +60,7 @@

-

$195/yr.

+

diff --git a/patterns/general-pricing-two-columns.php b/patterns/pricing-two-columns.php similarity index 97% rename from patterns/general-pricing-two-columns.php rename to patterns/pricing-two-columns.php index 9f3c6e3d..2b4b694b 100644 --- a/patterns/general-pricing-two-columns.php +++ b/patterns/pricing-two-columns.php @@ -1,8 +1,8 @@ @@ -13,7 +13,7 @@

-

$95/yr.

+

@@ -60,7 +60,7 @@

-

$195/yr.

+

diff --git a/patterns/product-box-dark.php b/patterns/product-box-dark.php new file mode 100644 index 00000000..1c7e36b3 --- /dev/null +++ b/patterns/product-box-dark.php @@ -0,0 +1,29 @@ + + +
+
+
+
<?php echo esc_attr__( 'Frost Theme Sample Image', 'frost' ); ?>
+
+ + +
+

+ + +

+ + +
+
+
+
+
+
+ diff --git a/patterns/product-box.php b/patterns/product-box.php new file mode 100644 index 00000000..3ea1d33b --- /dev/null +++ b/patterns/product-box.php @@ -0,0 +1,29 @@ + + +
+
+
+
<?php echo esc_attr__( 'Sample Image', 'frost' ); ?>
+
+ + +
+

+ + +

+ + +
+
+
+
+
+
+ diff --git a/patterns/progress-bars.php b/patterns/progress-bars.php new file mode 100644 index 00000000..0faa54fd --- /dev/null +++ b/patterns/progress-bars.php @@ -0,0 +1,153 @@ + + +
+
+
+
+

+ + +

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

+ + +

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

+ + +

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

+ + +

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

+ + +

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

+ + +

+
+ + +
+ +
+
+ + +
+
+ +
+
+
+
+ diff --git a/patterns/general-team-four-columns.php b/patterns/team-four-columns.php similarity index 90% rename from patterns/general-team-four-columns.php rename to patterns/team-four-columns.php index 2abc51f3..26220243 100644 --- a/patterns/general-team-four-columns.php +++ b/patterns/team-four-columns.php @@ -1,15 +1,15 @@
-
Sample Image
+
<?php echo esc_attr__( 'Sample Image', 'frost' ); ?>

@@ -25,7 +25,7 @@
-
Sample Image
+
<?php echo esc_attr__( 'Sample Image', 'frost' ); ?>

@@ -41,7 +41,7 @@
-
Sample Image
+
<?php echo esc_attr__( 'Sample Image', 'frost' ); ?>

@@ -57,7 +57,7 @@
-
Sample Image
+
<?php echo esc_attr__( 'Sample Image', 'frost' ); ?>

diff --git a/patterns/general-testimonials-contrast-background.php b/patterns/testimonials-dark.php similarity index 84% rename from patterns/general-testimonials-contrast-background.php rename to patterns/testimonials-dark.php index e645b415..7443439b 100644 --- a/patterns/general-testimonials-contrast-background.php +++ b/patterns/testimonials-dark.php @@ -1,7 +1,7 @@ @@ -12,10 +12,10 @@

-

+

-

—Allison Taylor, Designer

+

@@ -23,10 +23,10 @@

-

+

-

—Anthony Breck, Developer

+

@@ -34,10 +34,10 @@

-

+

-

—Rebecca Jones, Coach

+

diff --git a/patterns/general-testimonials-image-contrast-background.php b/patterns/testimonials-image-dark.php similarity index 80% rename from patterns/general-testimonials-image-contrast-background.php rename to patterns/testimonials-image-dark.php index a7b40c81..892988e7 100644 --- a/patterns/general-testimonials-image-contrast-background.php +++ b/patterns/testimonials-image-dark.php @@ -1,7 +1,7 @@ @@ -12,18 +12,18 @@

-

+

-
Testimonial Avatar
+
<?php echo esc_attr__( 'Testimonial Avatar', 'frost' ); ?>
-

Allison Taylor

+

-

Designer

+

@@ -33,18 +33,18 @@

-

+

-
Testimonial Avatar
+
<?php echo esc_attr__( 'Testimonial Avatar', 'frost' ); ?>
-

Anthony Breck

+

-

Developer

+

@@ -54,18 +54,18 @@

-

+

-
Testimonial Avatar
+
<?php echo esc_attr__( 'Testimonial Avatar', 'frost' ); ?>
-

Rebecca Jones

+

-

Coach

+

diff --git a/patterns/general-testimonials-image.php b/patterns/testimonials-image.php similarity index 77% rename from patterns/general-testimonials-image.php rename to patterns/testimonials-image.php index b550eb74..cfc89346 100644 --- a/patterns/general-testimonials-image.php +++ b/patterns/testimonials-image.php @@ -1,7 +1,7 @@ @@ -12,18 +12,18 @@

-

+

-
Testimonial Avatar
+
<?php echo esc_attr__( 'Testimonial Avatar', 'frost' ); ?>
-

Allison Taylor

+

-

Designer

+

@@ -33,18 +33,18 @@

-

+

-
Testimonial Avatar
+
<?php echo esc_attr__( 'Testimonial Avatar', 'frost' ); ?>
-

Anthony Breck

+

-

Developer

+

@@ -54,18 +54,18 @@

-

+

-
Testimonial Avatar
+
<?php echo esc_attr__( 'Testimonial Avatar', 'frost' ); ?>
-

Rebecca Jones

+

-

Coach

+

diff --git a/patterns/general-testimonials.php b/patterns/testimonials.php similarity index 84% rename from patterns/general-testimonials.php rename to patterns/testimonials.php index eb7bc3bb..331a163f 100644 --- a/patterns/general-testimonials.php +++ b/patterns/testimonials.php @@ -1,7 +1,7 @@ @@ -12,10 +12,10 @@

-

+

-

—Allison Taylor, Designer

+

@@ -23,10 +23,10 @@

-

+

-

—Anthony Breck, Developer

+

@@ -34,10 +34,10 @@

-

+

-

—Rebecca Jones, Coach

+

diff --git a/phpcs.xml b/phpcs.xml index ad921b32..bb8d54f1 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -28,6 +28,26 @@ + + + * + + + + + 0 + + + + + 0 + + + + + * + + warning @@ -57,14 +77,4 @@ /css/* /js/* /styles/* - - - - * - - - - - * - \ No newline at end of file diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml new file mode 100644 index 00000000..7734d513 --- /dev/null +++ b/phpdoc.dist.xml @@ -0,0 +1,39 @@ + + + Ash + + wiki + wiki/cache + + + + + includes/**/* + parts/**/* + patterns/**/* + templates/**/* + functions.php + + + + + + \ No newline at end of file diff --git a/readme.txt b/readme.txt index 4d0f8e9f..3a87c2b1 100644 --- a/readme.txt +++ b/readme.txt @@ -1,114 +1,25 @@ === Ash === -Contributors: aware, wpengine, bgardner -Requires at least: 6.2 -Tested up to: 6.2 -Requires PHP: 7.4 -Stable tag: 1.0.1 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html +Contributors: aware, maxinacube, wpengine, bgardner +Requires at least: 6.6 +Tested up to: 6.6 +Requires PHP: 8.2 +Stable tag: 1.0.9 +License: GNU General Public License v3 +License URI: https://www.gnu.org/licenses/gpl-3.0.html == Description == -With its clean, minimal design and powerful feature set, Frost enables agencies to build stylish and sophisticated WordPress websites. Frost is a masterpiece of design and functionality. It features a range of valuable elements, including hero and portfolio sections, prominent call-to-action buttons, and customer testimonials. In addition, Frost utilizes the potential of the editor to create link pages, serve as a powerful tool for building relationships with clients, sharing valuable content, and boosting social media engagement. So whether you’re building a website for your business, personal brand, or creative project, Frost is the perfect solution for anyone looking to launch a website quickly and efficiently. +With its clean, minimal design and powerful feature set, Ash enables agencies to build stylish and sophisticated WordPress websites. Ash is a masterpiece of design and functionality. It features a range of valuable patterns, including hero and portfolio sections, prominent call-to-action buttons, and customer testimonials. Whether you’re building a website for your business, personal brand, or creative project, Frost is perfect for anyone looking to launch quickly and efficiently. -== Changelog == - -= 1.0.1 - 2023-04-25 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v1.0.1) - -= 1.0.0 - 2023-03-31 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v1.0.0) - -= 0.9.10 - 2022-12-09 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.10) - -= 0.9.9 - 2022-10-25 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.9) - -= 0.9.8 - 2022-07-08 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.8) - -= 0.9.7 - 2022-05-31 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.7) - -= 0.9.6 - 2022-05-13 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.6) - -= 0.9.5 - 2022-04-25 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.5) - -= 0.9.4 - 2022-04-18 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.4) - -= 0.9.3 - 2022-04-11 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.3) - -= 0.9.2 - 2022-04-04 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.2) -= 0.9.1 - 2022-03-21 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.1) - -= 0.9.0 - 2022-03-14 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.9.0) - -= 0.8.9 - 2022-03-07 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.8.9) - -= 0.8.8 - 2022-02-28 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.8.8) - -= 0.8.7 - 2022-02-21 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.8.7) - -= 0.8.6 - 2022-02-14 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.8.6) - -= 0.8.5 - 2022-02-07 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/v0.8.5) - -= 0.8.4 - 2022-01-31 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/2022.01.31) - -= 0.8.3 - 2022-01-24 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/2022.01.24) - -= 0.8.2 - 2022-01-17 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/2022.01.17) - -= 0.8.1 - 2022-01-10 = - -[Release Notes](https://github.com/wpengine/frost/releases/tag/2022.01.10) - -= 0.8.0 - 2022-01-03 = +== Changelog == -Initial public release. +See [CHANGELOG.md](https://github.com/linchpin/ash/blob/trunk/CHANGELOG.md) == Copyright == -Frost WordPress Theme, (C) 2022-2023 WP Engine. -Frost is distributed under the terms of the GNU GPL. +Ash WordPress Theme, (C) 2022-2023 Linchpin. +Ash is distributed under the terms of the GNU GPL. 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 diff --git a/screenshot.png b/screenshot.png index 8d25b609..73587043 100644 Binary files a/screenshot.png and b/screenshot.png differ diff --git a/style.css b/style.css index 08607912..cebac64a 100644 --- a/style.css +++ b/style.css @@ -1,24 +1,24 @@ /* Theme Name: Ash Theme URI: https://github.com/linchpin/ash/ -Author: WP Engine +Author: Linchpin, WP Engine Author URI: https://linchpin.com/ Description: A fork of Frost by WP Engine Tags: block-patterns, block-styles, custom-colors, custom-logo, custom-menu, editor-style, full-site-editing, one-column, template-editing, threaded-comments, translation-ready, wide-blocks -Requires at least: 6.2 -Tested up to: 6.2 -Requires PHP: 7.4 -Version: 1.0.1 -License: GNU General Public License v2 or later -License URI: https://www.gnu.org/licenses/gpl-2.0.html -Text Domain: frost - -Ash WordPress Theme, (C) 2022 Linchpin. +Requires at least: 6.6 +Tested up to: 6.6 +Requires PHP: 8.2 +Version: 1.0.9 +License: GNU General Public License v3 +License URI: https://www.gnu.org/licenses/gpl-3.0.html +Text Domain: ash + +Ash WordPress Theme, (C) 2024 Linchpin. Ash is distributed under the terms of the GNU GPL. */ /* Defaults ----------------------------------------------------------------------------- */ +---------------------------------------- */ *, *::before, @@ -48,7 +48,8 @@ a:not(.wp-element-button) { } b, -strong { +strong, +th { font-weight: var(--wp--custom--font-weight--medium); } @@ -59,72 +60,69 @@ mark { background-size: 100% 15%; } -/* Blocks ----------------------------------------------------------------------------- */ - -/* Calendar ---------------------------------------------- */ - -.wp-block-calendar table caption, -.wp-block-calendar table tbody { - color: var(--wp--preset--color--contrast); -} - -.wp-block-calendar table th { - background-color: var(--wp--preset--color--contrast); - color: var(--wp--preset--color--base); -} +/* -- Forms -- */ -.wp-block-calendar tbody td, -.wp-block-calendar th { +input, +select, +textarea { + background-color: var(--wp--preset--color--base); border: 1px solid var(--wp--preset--color--contrast); - padding: 10px; + border-radius: 0; + color: var(--wp--preset--color--contrast); + font-family: var(--wp--preset--font-family--primary); + font-size: var(--wp--preset--font-size--medium); + font-weight: var(--wp--custom--font-weight--light); + line-height: var(--wp--custom--line-height--body); + padding: 10px 20px; + width: 100%; } -/* Code ---------------------------------------------- */ - -*:not(.wp-block-code) > code { +input:focus, +textarea:focus { background-color: var(--wp--preset--color--neutral); - font-size: var(--wp--preset--font-size--small); - padding: 5px 8px; + outline: none; } -/* Comments ---------------------------------------------- */ - -.wp-block-post-comments-form .comment-reply-title { - margin-bottom: var(--wp--custom--spacing--gap); +input[type="checkbox"], +input[type="image"], +input[type="radio"] { + width: auto; } -.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]), -.wp-block-post-comments-form textarea { - border-color: var(--wp--preset--color--contrast); - padding: 10px 15px; +input[type="button"], +input[type="email"], +input[type="search"], +input[type="submit"], +input[type="text"], +textarea { + -webkit-appearance: none; } -.wp-block-post-comments-form p:not(.form-submit) { - margin-bottom: 20px; +::placeholder { + color: var(--wp--preset--color--contrast); + font-size: var(--wp--preset--font-size--small); + opacity: 0.5; } -.wp-block-post-comments-form .comment-form-cookies-consent label { - font-size: var(--wp--preset--font-size--x-small); -} +/* Blocks +---------------------------------------- */ -/* List ---------------------------------------------- */ +/* -- Code -- */ -.is-style-no-disc { - list-style-type: none; - padding-left: 0; +*:not(.wp-block-code) > code { + background-color: var(--wp--preset--color--neutral); + font-size: var(--wp--preset--font-size--small); + padding: 5px 8px; } -/* Navigation ---------------------------------------------- */ +/* -- Navigation -- */ .wp-block-navigation__responsive-container.is-menu-open { - padding-bottom: 30px; - padding-top: 30px + padding: var(--wp--custom--spacing--gap); +} + +.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { + padding-top: var(--wp--custom--spacing--gap); } .wp-block-navigation__responsive-container-close, @@ -138,8 +136,7 @@ mark { color: var(--wp--preset--color--base); } -/* Navigation Submenu ---------------------------------------------- */ +/* -- Navigation Submenu -- */ .wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container { background-color: var(--wp--preset--color--contrast); @@ -152,155 +149,38 @@ mark { padding: 2px 10px; } -/* Separator ---------------------------------------------- */ - -.wp-block-separator.is-style-dots:before { - font-family: inherit; - font-size: var(--wp--preset--font-size--large); - letter-spacing: 10px; - padding-left: 10px; -} - -.wp-block-separator:not(.is-style-wide):not(.is-style-dots) { - width: 100px; -} - -.wp-block-separator:not(.is-style-dots), -.wp-block-separator.has-background:not(.is-style-dots) { - border-bottom: 1px solid currentColor; - border-top: none; - height: 1px; -} - -/* Table ---------------------------------------------- */ +/* Utility +---------------------------------------- */ -.wp-block-table.is-style-stripes { - border-bottom: none; -} - -.wp-block-table table { - border-collapse: collapse; -} +/* -- Box Shadow -- */ -.wp-block-table thead { - border-bottom: 3px solid var(--wp--preset--color--contrast); +.is-style-shadow-light { + box-shadow: var(--wp--preset--shadow--light); } -.wp-block-table tfoot { - border-top: 3px solid var(--wp--preset--color--contrast); -} - -.wp-block-table td, -.wp-block-table th, -.wp-block-table tr, -.wp-block-table.is-style-stripes td, -.wp-block-table.is-style-stripes th, -.wp-block-table.is-style-stripes tr { - border: 1px solid var(--wp--preset--color--contrast); -} - -.wp-block-table th { - font-weight: var(--wp--custom--font-weight--regular); -} - -.wp-block-table td, -.wp-block-table th { - padding: 5px; -} - -.wp-block-table.is-style-stripes tbody tr:nth-child(odd) { - background-color: var(--wp--preset--color--neutral); -} - -/* Custom ----------------------------------------------------------------------------- */ - -/* Forms ---------------------------------------------- */ - -input, -select, -textarea, -.wp-block-search__input { - background-color: var(--wp--preset--color--base); - border: 1px solid var(--wp--preset--color--contrast); - border-radius: 0; - color: var(--wp--preset--color--contrast); - font-family: var(--wp--preset--font-family--primary); - font-size: var(--wp--preset--font-size--medium); - font-weight: var(--wp--custom--font-weight--light); - line-height: var(--wp--custom--line-height--body); - padding: 10px 20px; - width: 100%; -} - -input:focus, -textarea:focus { - background-color: var(--wp--preset--color--neutral); - outline: none; -} - -input[type="checkbox"], -input[type="image"], -input[type="radio"] { - width: auto; -} - -input[type="button"], -input[type="email"], -input[type="search"], -input[type="submit"], -input[type="text"], -textarea { - -webkit-appearance: none; -} - -::placeholder { - color: var(--wp--preset--color--contrast); - font-size: var(--wp--preset--font-size--small); - opacity: 0.5; +.is-style-shadow-solid { + box-shadow: var(--wp--preset--shadow--solid); } /* Media Queries ----------------------------------------------------------------------------- */ +---------------------------------------- */ -@media only screen and (max-width: 780px) { +@media only screen and (max-width: 600px) { - /* Columns - --------------------------------------------- */ + /* -- Utility -- */ - .is-style-columns-reverse { - flex-direction: column-reverse; + .is-style-hidden-mobile { + display: none !important; } } -@media only screen and (min-width: 800px) { +@media only screen and (max-width: 782px) { - /* Navigation Link - --------------------------------------------- */ - - .wp-block-navigation-item.is-style-outline a { - border: 1px solid currentColor; - padding: 8px 15px; - } + /* -- Columns -- */ - /* Pullquote - --------------------------------------------- */ - - .wp-block-pullquote.alignleft, - .wp-block-pullquote.alignright { - max-width: 300px; - } - - .wp-block-pullquote.alignleft { - margin-right: 30px !important; - } - - .wp-block-pullquote.alignright { - margin-left: 30px !important; + .is-style-columns-reverse { + flex-direction: column-reverse; } } diff --git a/styles/graphite.json b/styles/graphite.json index 97ef9a51..e61cdd05 100644 --- a/styles/graphite.json +++ b/styles/graphite.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Graphite", + "description": "Graphite-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#666666", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#666666", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#3d3d3d", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#3d3d3d", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/styles/green.json b/styles/green.json index b4870e32..fea138e8 100644 --- a/styles/green.json +++ b/styles/green.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Green", + "description": "Green-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#006600", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#006600", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#003d00", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#003d00", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/styles/magenta.json b/styles/magenta.json index 0cdd47ff..7c228970 100644 --- a/styles/magenta.json +++ b/styles/magenta.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Magenta", + "description": "Magenta-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#990066", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#990066", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#5c003d", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#5c003d", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/styles/orange.json b/styles/orange.json index 732a7240..9dd911e2 100644 --- a/styles/orange.json +++ b/styles/orange.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Orange", + "description": "Orange-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#e65c00", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#e65c00", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#8a3700", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#8a3700", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/styles/purple.json b/styles/purple.json index 28341e63..332cfc0d 100644 --- a/styles/purple.json +++ b/styles/purple.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Purple", + "description": "Purple-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#6600cc", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#6600cc", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#3d007a", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#3d007a", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/styles/red.json b/styles/red.json index b084220b..21d0c064 100644 --- a/styles/red.json +++ b/styles/red.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Red", + "description": "Red-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#cc0000", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#cc0000", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#7a0000", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#7a0000", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/styles/teal.json b/styles/teal.json index 7d9935e2..15eb3bd7 100644 --- a/styles/teal.json +++ b/styles/teal.json @@ -2,23 +2,24 @@ "version": 2, "$schema": "https://schemas.wp.org/trunk/theme.json", "title": "Teal", + "description": "Teal-based palette with two shades", "settings": { "color": { "duotone": [ { + "colors": [ "#000000", "#ffffff" ], "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] + "slug": "black-and-white" }, { + "colors": [ "#006666", "#ffffff" ], "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#006666", "#ffffff" ] + "slug": "primary-and-white" }, { + "colors": [ "#003d3d", "#ffffff" ], "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#003d3d", "#ffffff" ] + "slug": "secondary-and-white" } ], "palette": [ diff --git a/templates/404.html b/templates/404.html index 37455780..41162ef1 100644 --- a/templates/404.html +++ b/templates/404.html @@ -1,6 +1,6 @@ -
+
diff --git a/templates/archive.html b/templates/archive.html index 2afbaa17..88334f53 100644 --- a/templates/archive.html +++ b/templates/archive.html @@ -4,10 +4,9 @@
-
- +
\ No newline at end of file diff --git a/templates/blank.html b/templates/blank.html index eca2e196..efd5f8e1 100644 --- a/templates/blank.html +++ b/templates/blank.html @@ -1,5 +1,5 @@ -
+
\ No newline at end of file diff --git a/templates/index.html b/templates/index.html index b4bee2cb..698d6acf 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,7 +1,7 @@ -
- +
+
\ No newline at end of file diff --git a/templates/no-title.html b/templates/no-title.html index 66aa82d0..11c365f3 100644 --- a/templates/no-title.html +++ b/templates/no-title.html @@ -1,6 +1,6 @@ -
+
diff --git a/templates/page.html b/templates/page.html index 55d81b81..f87773db 100644 --- a/templates/page.html +++ b/templates/page.html @@ -1,12 +1,16 @@ -
- -
- -
+
+ +
+ +
+ +
+ + +
-
\ No newline at end of file diff --git a/templates/search.html b/templates/search.html index 88683eb3..d63b7713 100644 --- a/templates/search.html +++ b/templates/search.html @@ -1,12 +1,12 @@ -
+
- +
\ No newline at end of file diff --git a/templates/single.html b/templates/single.html index cb1b88dc..de59bdd8 100644 --- a/templates/single.html +++ b/templates/single.html @@ -1,35 +1,32 @@ -
- -
- - - +
+ +
+ +
+ + + + +
-
- - - -
- -
- -

In:

- - -
+ + +
+ + +
- -
+ + -
\ No newline at end of file diff --git a/theme.json b/theme.json index 595664a2..80c268b0 100644 --- a/theme.json +++ b/theme.json @@ -1,442 +1,60 @@ { - "version": 2, - "$schema": "https://schemas.wp.org/trunk/theme.json", - "customTemplates": [ - { - "name": "blank", - "title": "Blank" - }, - { - "name": "leftmenu", - "title": "Page (Left Menu)", - "postTypes": [ - "page", - "post" - ] - }, - { - "name": "no-title", - "title": "No Title" - } - ], - "settings": { - "appearanceTools": true, - "blocks": { - "core/button": { - "spacing": { - "spacingSizes": [ - { - "name": "xSmall", - "size": "10px", - "slug": "x-small" - }, - { - "name": "Small", - "size": "15px", - "slug": "small" - }, - { - "name": "Medium", - "size": "20px", - "slug": "medium" - }, - { - "name": "Large", - "size": "30px", - "slug": "large" - }, - { - "name": "xLarge", - "size": "40px", - "slug": "x-large" - } - ] - } - } - }, - "color": { - "defaultDuotone": false, - "defaultGradients": false, - "defaultPalette": false, - "duotone": [ - { - "name": "Black and White", - "slug": "black-and-white", - "colors": [ "#000000", "#ffffff" ] - }, - { - "name": "Primary and White", - "slug": "primary-and-white", - "colors": [ "#0000ff", "#ffffff" ] - }, - { - "name": "Secondary and White", - "slug": "secondary-and-white", - "colors": [ "#000099", "#ffffff" ] - } - ], - "gradients": [ - { - "gradient": "linear-gradient(0deg, var(--wp--preset--color--primary) 0%, var(--wp--preset--color--contrast) 100%)", - "name": "Primary to Contrast", - "slug": "primary-contrast" - } - ], - "palette": [ - { - "name": "Primary", - "slug": "primary", - "color": "#3fc1d0" - }, - { - "name": "Secondary", - "slug": "secondary", - "color": "#7d58c6" - }, - { - "name": "Tertiary", - "slug": "tertiary", - "color": "#3aa1ce" - }, - { - "name": "Magenta", - "slug": "magenta", - "color": "#e5336a" - }, - { - "name": "Green", - "slug": "green", - "color": "#8fca52" - }, - { - "name": "Violet", - "slug": "violet", - "color": "#7d58c6" - }, - { - "name": "White", - "slug": "base", - "color": "#ffffff" - }, - { - "name": "Lightest Gray", - "slug": "lightest-gray", - "color": "#fafafa" - }, - { - "name": "Light Gray", - "slug": "light-gray", - "color": "#d9d9d9" - }, - { - "name": "Gray", - "slug": "gray", - "color": "#8e949a" - }, - { - "name": "Medium Gray", - "slug": "medium-gray", - "color": "#646c76" - }, - { - "name": "Off Black", - "slug": "off-black", - "color": "#001e1e" - }, - { - "name": "True Black", - "slug": "main", - "color": "#000000" - }, - { - "color": "#000099", - "name": "Secondary", - "slug": "secondary" - }, - { - "color": "#eeeeee", - "name": "Neutral", - "slug": "neutral" - } - ] - }, - "custom": { - "fontWeight": { - "thin": 100, - "extra-light": 200, - "light": 300, - "regular": 400, - "medium": 500, - "semi-bold": 600, - "black": 900 - }, - "lineHeight": { - "body": 1.75, - "heading": 1.1, - "medium": 1.5, - "one": 1 - }, - "spacing": { - "gap": "30px" - } - }, - "layout": { - "contentSize": "640px", - "wideSize": "1200px" - }, - "spacing": { - "spacingSizes": [ - { - "name": "xSmall", - "size": "20px", - "slug": "x-small" - }, - { - "name": "Small", - "size": "clamp(30px, 4vw, 40px)", - "slug": "small" - }, - { - "name": "Medium", - "size": "clamp(40px, 6vw, 60px)", - "slug": "medium" - }, - { - "name": "Large", - "size": "clamp(50px, 8vw, 80px)", - "slug": "large" - }, - { - "name": "xLarge", - "size": "clamp(60px, 10vw, 100px)", - "slug": "x-large" - } - ], - "units": [ - "px", - "em", - "rem", - "vh", - "vw", - "%" - ] - }, - "typography": { - "dropCap": false, - "fluid": true, - "fontFamilies": [ - { - "fontFamily": "Gilmer-Regular, sans-serif", - "name": "Gilmer Regular", - "slug": "primary", - "fontFace": [ - { - "fontDisplay": "block", - "fontFamily": "Gilmer-Regular", - "fontStretch": "normal", - "fontStyle": "normal", - "fontWeight": "normal", - "src": [ - "file:./assets/fonts/gilmer-regular.eot", - "file:./assets/fonts/gilmer-regular.woff2", - "file:./assets/fonts/gilmer-regular.woff", - "file:./assets/fonts/gilmer-regular.ttf", - "file:./assets/fonts/gilmer-regular.woff2" - ] - } - ] - }, - { - "fontFamily": "Gilmer-Light, sans-serif", - "name": "Gilmer Light", - "slug": "light", - "fontFace": [ - { - "fontDisplay": "block", - "fontFamily": "Gilmer-Light", - "fontStretch": "normal", - "fontStyle": "normal", - "fontWeight": "normal", - "src": [ - "file:./assets/fonts/gilmer-light.eot", - "file:./assets/fonts/gilmer-light.woff2", - "file:./assets/fonts/gilmer-light.woff", - "file:./assets/fonts/gilmer-light.ttf", - "file:./assets/fonts/gilmer-light.woff2" - ] - } - ] - }, - { - "fontFamily": "Gilmer-Medium, sans-serif", - "name": "Gilmer Medium", - "slug": "medium", - "fontFace": [ - { - "fontDisplay": "block", - "fontFamily": "Gilmer-Medium", - "fontStretch": "normal", - "fontStyle": "normal", - "fontWeight": "500", - "src": [ - "file:./assets/fonts/gilmer-medium.eot", - "file:./assets/fonts/gilmer-medium.woff2", - "file:./assets/fonts/gilmer-medium.woff", - "file:./assets/fonts/gilmer-medium.ttf", - "file:./assets/fonts/gilmer-medium.woff2" - ] - } - ] - }, - { - "fontFamily": "Gilmer-Bold, sans-serif", - "name": "Gilmer Bold", - "slug": "bold", - "fontFace": [ - { - "fontDisplay": "block", - "fontFamily": "Gilmer-Bold", - "fontStretch": "normal", - "fontStyle": "normal", - "fontWeight": "normal", - "src": [ - "file:./assets/fonts/gilmer-bold.eot", - "file:./assets/fonts/gilmer-bold.woff2", - "file:./assets/fonts/gilmer-bold.woff", - "file:./assets/fonts/gilmer-bold.ttf", - "file:./assets/fonts/gilmer-bold.woff2" - ] - } - ] - }, - { - "fontFamily": "Gilmer-Heavy, sans-serif", - "name": "Gilmer Heavy", - "slug": "heavy", - "fontFace": [ - { - "fontDisplay": "block", - "fontFamily": "Gilmer-Heavy", - "fontStretch": "normal", - "fontStyle": "normal", - "fontWeight": "normal", - "src": [ - "file:./assets/fonts/gilmer-heavy.eot", - "file:./assets/fonts/gilmer-heavy.woff2", - "file:./assets/fonts/gilmer-heavy.woff", - "file:./assets/fonts/gilmer-heavy.ttf", - "file:./assets/fonts/gilmer-heavy.woff2" - ] - } - ] - }, - { - "fontFamily": "Gilmer-Outline, sans-serif", - "name": "Gilmer Outline", - "slug": "outline", - "fontFace": [ - { - "fontDisplay": "block", - "fontFamily": "Gilmer-Outline", - "fontStretch": "normal", - "fontStyle": "normal", - "fontWeight": "normal", - "src": [ - "file:./assets/fonts/gilmer-outline.eot", - "file:./assets/fonts/gilmer-outline.woff2", - "file:./assets/fonts/gilmer-outline.woff", - "file:./assets/fonts/gilmer-outline.ttf", - "file:./assets/fonts/gilmer-outline.woff2" - ] - } - ] - }, - { - "fontFamily": "monospace", - "name": "Monospace", - "slug": "monospace" - } - ], - "fontSizes": [ - { - "fluid": false, - "name": "xSmall", - "size": "16px", - "slug": "x-small" - }, - { - "fluid": false, - "name": "Small", - "size": "18px", - "slug": "small" - }, - { - "fluid": { - "min": "18px", - "max": "20px" - }, - "name": "Medium", - "size": "20px", - "slug": "medium" - }, - { - "fluid": { - "min": "20px", - "max": "24px" - }, - "name": "Large", - "size": "24px", - "slug": "large" - }, - { - "fluid": { - "min": "24px", - "max": "30px" - }, - "name": "xLarge", - "size": "30px", - "slug": "x-large" - }, - { - "fluid": { - "min": "30px", - "max": "36px" - }, - "name": "36px", - "size": "36px", - "slug": "max-36" - }, - { - "fluid": { - "min": "36px", - "max": "48px" - }, - "name": "48px", - "size": "48px", - "slug": "max-48" - }, - { - "fluid": { - "min": "42px", - "max": "60px" - }, - "name": "60px", - "size": "60px", - "slug": "max-60" - }, - { - "fluid": { - "min": "48px", - "max": "72px" - }, - "name": "72px", - "size": "72px", - "slug": "max-72" - } - ] - }, - + "version": 2, + "$schema": "https://schemas.wp.org/trunk/theme.json", + "customTemplates": [ + { + "name": "blank", + "postTypes": ["page", "post"], + "title": "Blank" + }, + { + "name": "no-title", + "postTypes": ["page", "post"], + "title": "No Title" + }, + { + "name": "leftmenu", + "title": "Page (Left Menu)", + "postTypes": [ + "page", + "post" + ] + } + ], + "settings": { + "appearanceTools": true, "blocks": { + "core/button": { + "spacing": { + "spacingSizes": [ + { + "name": "xSmall", + "size": "10px", + "slug": "x-small" + }, + { + "name": "Small", + "size": "15px", + "slug": "small" + }, + { + "name": "Medium", + "size": "20px", + "slug": "medium" + }, + { + "name": "Large", + "size": "30px", + "slug": "large" + }, + { + "name": "xLarge", + "size": "40px", + "slug": "x-large" + } + ] + } + }, "core/heading": { "typography": { "fontSizes": [ @@ -469,326 +87,795 @@ ] } } + }, + "color": { + "defaultDuotone": false, + "defaultGradients": false, + "defaultPalette": false, + "duotone": [ + { + "name": "Black and White", + "slug": "black-and-white", + "colors": [ + "#000000", + "#ffffff" + ] + }, + { + "name": "Primary and White", + "slug": "primary-and-white", + "colors": [ + "#0000ff", + "#ffffff" + ] + }, + { + "name": "Secondary and White", + "slug": "secondary-and-white", + "colors": [ + "#000099", + "#ffffff" + ] + } + ], + "gradients": [ + { + "gradient": "linear-gradient(0deg, var(--wp--preset--color--primary) 0%, var(--wp--preset--color--contrast) 100%)", + "name": "Primary to Contrast", + "slug": "primary-contrast" + } + ], + "palette": [ + { + "color": "#ffffff", + "name": "Base", + "slug": "base" + }, + { + "name": "Primary", + "slug": "primary", + "color": "#3fc1d0" + }, + { + "name": "Secondary", + "slug": "secondary", + "color": "#7d58c6" + }, + { + "name": "Tertiary", + "slug": "tertiary", + "color": "#3aa1ce" + }, + { + "name": "Magenta", + "slug": "magenta", + "color": "#e5336a" + }, + { + "name": "Green", + "slug": "green", + "color": "#8fca52" + }, + { + "name": "Violet", + "slug": "violet", + "color": "#7d58c6" + }, + { + "name": "White", + "slug": "base", + "color": "#ffffff" + }, + { + "name": "Lightest Gray", + "slug": "lightest-gray", + "color": "#fafafa" + }, + { + "name": "Light Gray", + "slug": "light-gray", + "color": "#d9d9d9" + }, + { + "name": "Gray", + "slug": "gray", + "color": "#8e949a" + }, + { + "name": "Medium Gray", + "slug": "medium-gray", + "color": "#646c76" + }, + { + "name": "Off Black", + "slug": "off-black", + "color": "#001e1e" + }, + { + "name": "True Black", + "slug": "main", + "color": "#000000" + }, + { + "color": "#000099", + "name": "Secondary", + "slug": "secondary" + }, + { + "color": "#eeeeee", + "name": "Neutral", + "slug": "neutral" + } + ] + }, + "custom": { + "fontWeight": { + "thin": 100, + "extra-light": 200, + "light": 300, + "regular": 400, + "medium": 500, + "semi-bold": 600, + "bold": 700, + "extra-bold": 800, + "black": 900 + }, + "lineHeight": { + "body": 1.75, + "heading": 1.1, + "medium": 1.5, + "one": 1 + }, + "spacing": { + "gap": "30px" + } + }, + "layout": { + "contentSize": "640px", + "wideSize": "1200px" + }, + "shadow": { + "defaultPresets": false, + "presets": [ + { + "name": "Light", + "slug": "light", + "shadow": "0 0 50px rgb(0 0 0 / 10%);" + }, + { + "name": "Solid", + "slug": "solid", + "shadow": "5px 5px currentColor" + } + ] + }, + "spacing": { + "spacingSizes": [ + { + "name": "xSmall", + "size": "20px", + "slug": "x-small" + }, + { + "name": "Small", + "size": "clamp(30px, 4vw, 40px)", + "slug": "small" + }, + { + "name": "Medium", + "size": "clamp(40px, 6vw, 60px)", + "slug": "medium" + }, + { + "name": "Large", + "size": "clamp(50px, 8vw, 80px)", + "slug": "large" + }, + { + "name": "xLarge", + "size": "clamp(60px, 10vw, 100px)", + "slug": "x-large" + } + ], + "units": [ + "px", + "em", + "rem", + "vh", + "vw", + "%" + ] + }, + "typography": { + "dropCap": false, + "fluid": true, + "fontFamilies": [ + { + "fontFamily": "Gilmer-Regular, sans-serif", + "name": "Gilmer Regular", + "slug": "primary", + "fontFace": [ + { + "fontDisplay": "block", + "fontFamily": "Gilmer-Regular", + "fontStretch": "normal", + "fontStyle": "normal", + "fontWeight": "normal", + "src": [ + "file:./assets/fonts/gilmer-regular.eot", + "file:./assets/fonts/gilmer-regular.woff2", + "file:./assets/fonts/gilmer-regular.woff", + "file:./assets/fonts/gilmer-regular.ttf", + "file:./assets/fonts/gilmer-regular.woff2" + ] + } + ] + }, + { + "fontFamily": "Gilmer-Light, sans-serif", + "name": "Gilmer Light", + "slug": "light", + "fontFace": [ + { + "fontDisplay": "block", + "fontFamily": "Gilmer-Light", + "fontStretch": "normal", + "fontStyle": "normal", + "fontWeight": "normal", + "src": [ + "file:./assets/fonts/gilmer-light.eot", + "file:./assets/fonts/gilmer-light.woff2", + "file:./assets/fonts/gilmer-light.woff", + "file:./assets/fonts/gilmer-light.ttf", + "file:./assets/fonts/gilmer-light.woff2" + ] + } + ] + }, + { + "fontFamily": "Gilmer-Medium, sans-serif", + "name": "Gilmer Medium", + "slug": "medium", + "fontFace": [ + { + "fontDisplay": "block", + "fontFamily": "Gilmer-Medium", + "fontStretch": "normal", + "fontStyle": "normal", + "fontWeight": "500", + "src": [ + "file:./assets/fonts/gilmer-medium.eot", + "file:./assets/fonts/gilmer-medium.woff2", + "file:./assets/fonts/gilmer-medium.woff", + "file:./assets/fonts/gilmer-medium.ttf", + "file:./assets/fonts/gilmer-medium.woff2" + ] + } + ] + }, + { + "fontFamily": "Gilmer-Bold, sans-serif", + "name": "Gilmer Bold", + "slug": "bold", + "fontFace": [ + { + "fontDisplay": "block", + "fontFamily": "Gilmer-Bold", + "fontStretch": "normal", + "fontStyle": "normal", + "fontWeight": "normal", + "src": [ + "file:./assets/fonts/gilmer-bold.eot", + "file:./assets/fonts/gilmer-bold.woff2", + "file:./assets/fonts/gilmer-bold.woff", + "file:./assets/fonts/gilmer-bold.ttf", + "file:./assets/fonts/gilmer-bold.woff2" + ] + } + ] + }, + { + "fontFamily": "Gilmer-Heavy, sans-serif", + "name": "Gilmer Heavy", + "slug": "heavy", + "fontFace": [ + { + "fontDisplay": "block", + "fontFamily": "Gilmer-Heavy", + "fontStretch": "normal", + "fontStyle": "normal", + "fontWeight": "normal", + "src": [ + "file:./assets/fonts/gilmer-heavy.eot", + "file:./assets/fonts/gilmer-heavy.woff2", + "file:./assets/fonts/gilmer-heavy.woff", + "file:./assets/fonts/gilmer-heavy.ttf", + "file:./assets/fonts/gilmer-heavy.woff2" + ] + } + ] + }, + { + "fontFamily": "Gilmer-Outline, sans-serif", + "name": "Gilmer Outline", + "slug": "outline", + "fontFace": [ + { + "fontDisplay": "block", + "fontFamily": "Gilmer-Outline", + "fontStretch": "normal", + "fontStyle": "normal", + "fontWeight": "normal", + "src": [ + "file:./assets/fonts/gilmer-outline.eot", + "file:./assets/fonts/gilmer-outline.woff2", + "file:./assets/fonts/gilmer-outline.woff", + "file:./assets/fonts/gilmer-outline.ttf", + "file:./assets/fonts/gilmer-outline.woff2" + ] + } + ] + }, + { + "fontFamily": "monospace", + "name": "Monospace", + "slug": "monospace" + } + ], + "fontSizes": [ + { + "fluid": false, + "name": "xSmall", + "size": "16px", + "slug": "x-small" + }, + { + "fluid": false, + "name": "Small", + "size": "18px", + "slug": "small" + }, + { + "fluid": { + "min": "18px", + "max": "20px" + }, + "name": "Medium", + "size": "20px", + "slug": "medium" + }, + { + "fluid": { + "min": "20px", + "max": "24px" + }, + "name": "Large", + "size": "24px", + "slug": "large" + }, + { + "fluid": { + "min": "24px", + "max": "30px" + }, + "name": "xLarge", + "size": "30px", + "slug": "x-large" + }, + { + "fluid": { + "min": "30px", + "max": "36px" + }, + "name": "36px", + "size": "36px", + "slug": "max-36" + }, + { + "fluid": { + "min": "36px", + "max": "48px" + }, + "name": "48px", + "size": "48px", + "slug": "max-48" + }, + { + "fluid": { + "min": "42px", + "max": "60px" + }, + "name": "60px", + "size": "60px", + "slug": "max-60" + }, + { + "fluid": { + "min": "48px", + "max": "72px" + }, + "name": "72px", + "size": "72px", + "slug": "max-72" + } + ] + }, + "useRootPaddingAwareAlignments": true + }, + "styles": { + "blocks": { + "core/button": { + "variations": { + "outline": { + "border": { + "color": "currentColor", + "style": "solid", + "width": "2åpx" + }, + "spacing": { + "padding": { + "top": "14px", + "right": "29px", + "bottom": "14px", + "left": "29px" + } + } + } + } + }, + "core/buttons": { + "spacing": { + "blockGap": "10px" + } + }, + "core/code": { + "color": { + "background": "var(--wp--preset--color--contrast)", + "text": "var(--wp--preset--color--base)" + }, + "css": "& code {overflow-wrap: normal; overflow-x: scroll; tab-size: 4; white-space: pre !important;}", + "spacing": { + "padding": { + "top": "var(--wp--custom--spacing--gap)", + "right": "var(--wp--custom--spacing--gap)", + "bottom": "var(--wp--custom--spacing--gap)", + "left": "var(--wp--custom--spacing--gap)" + } + }, + "typography": { + "fontFamily": "var(--wp--preset--font-family--monospace)", + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "core/comment-author-name": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)", + "lineHeight": "var(--wp--custom--line-height--medium)" + } + }, + "core/comment-date": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)", + "lineHeight": "var(--wp--custom--line-height--medium)" + } + }, + "core/comment-edit-link": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)", + "lineHeight": "var(--wp--custom--line-height--medium)" + } + }, + "core/comment-reply-link": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "core/comments": { + "spacing": { + "margin": { + "top": "var(--wp--preset--spacing--x-large)" + } + } + }, + "core/comments-title": { + "spacing": { + "margin": { + "top": "var(--wp--custom--spacing--gap)", + "bottom": "var(--wp--custom--spacing--gap)" + } + } + }, + "core/cover": { + "spacing": { + "padding": { + "top": "var(--wp--custom--spacing--gap)", + "right": "var(--wp--custom--spacing--gap)", + "bottom": "var(--wp--custom--spacing--gap)", + "left": "var(--wp--custom--spacing--gap)" + } + } + }, + "core/image": { + "spacing": { + "margin": { + "top": "30px", + "right": "0", + "bottom": "30px", + "left": "0" + } + } + }, + "core/list": { + "css": "&.is-style-no-disc {list-style-type: none; padding-left: 0;}", + "spacing": { + "padding": { + "left": "var(--wp--custom--spacing--gap)" + } + } + }, + "core/navigation": { + "elements": { + "link": { + "typography": { + "textDecoration": "none" + } + } + }, + "typography": { + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "core/paragraph": { + "css": ".has-background {padding: 20px 30px;}" + }, + "core/post-comments-form": { + "css": "& input[type=submit] {width: auto;} & label {font-size: var(--wp--preset--font-size--x-small);}" + }, + "core/post-template": { + "spacing": { + "blockGap": "var(--wp--preset--spacing--medium);" + } + }, + "core/preformatted": { + "color": { + "background": "var(--wp--preset--color--contrast)", + "text": "var(--wp--preset--color--base)" + }, + "css": "{overflow-wrap: normal; overflow-x: scroll; tab-size: 4; white-space: pre !important;}", + "spacing": { + "padding": { + "top": "25px", + "right": "30px", + "bottom": "25px", + "left": "30px" + } + } + }, + "core/pullquote": { + "border": { + "color": "var(--wp--preset--color--contrast)", + "style": "solid", + "width": "1px" + }, + "css": "& p {margin: 0;}", + "elements": { + "cite": { + "typography": { + "fontSize": "var(--wp--preset--font-size--x-small)", + "fontStyle": "inherit" + } + } + }, + "spacing": { + "padding": { + "top": "var(--wp--custom--spacing--gap)", + "right": "var(--wp--custom--spacing--gap)", + "bottom": "var(--wp--custom--spacing--gap)", + "left": "var(--wp--custom--spacing--gap)" + } + }, + "typography": { + "fontSize": "var(--wp--preset--font-size--medium)", + "lineHeight": "var(--wp--custom--line-height--medium)" + } + }, + "core/quote": { + "border": { + "color": "var(--wp--preset--color--contrast)", + "style": "solid", + "width": "1px" + }, + "css": "& p {margin: 0;}", + "elements": { + "cite": { + "typography": { + "fontSize": "var(--wp--preset--font-size--x-small)", + "fontStyle": "inherit" + } + } + }, + "spacing": { + "padding": { + "top": "var(--wp--custom--spacing--gap)", + "right": "var(--wp--custom--spacing--gap)", + "bottom": "var(--wp--custom--spacing--gap)", + "left": "var(--wp--custom--spacing--gap)" + } + } + }, + "core/separator": { + "border": { + "color": "currentColor", + "radius": "0", + "style": "solid", + "width": "1px 0 0" + }, + "css": ":not(.is-style-wide):not(.is-style-dots) {width: 100px;}" + }, + "core/site-title": { + "elements": { + "link": { + "typography": { + "textDecoration": "none" + } + } + }, + "typography": { + "fontSize": "var(--wp--preset--font-size--large)" + } + }, + "core/social-links": { + "css": ".is-style-outline .wp-block-social-link {background-color: transparent;border: 1px solid currentColor;}", + "spacing": { + "blockGap": "10px" + } + }, + "core/spacer": { + "spacing": { + "margin": { + "top": "0 !important" + } + } + }, + "core/table": { + "css": "th {border-color: var(--wp--preset--color--contrast) !important;} & td {border-color: var(--wp--preset--color--contrast) !important;}", + "typography": { + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "core/template-part": { + "spacing": { + "margin": { + "top": "0" + } + } + }, + "core/term-description": { + "css": "& p {margin: 0;}" + } + }, + "color": { + "background": "var(--wp--preset--color--base)", + "text": "var(--wp--preset--color--contrast)" + }, + "elements": { + "button": { + "border": { + "radius": "5px" + }, + "color": { + "background": "var(--wp--preset--color--primary)", + "text": "var(--wp--preset--color--base)" + }, + "spacing": { + "padding": { + "top": "15px", + "right": "30px", + "bottom": "15px", + "left": "30px" + } + }, + "typography": { + "fontSize": "var(--wp--preset--font-size--x-small)", + "fontWeight": "var(--wp--custom--font-weight--regular)", + "lineHeight": "var(--wp--custom--line-height--medium)" + }, + ":hover": { + "color": { + "background": "var(--wp--preset--color--primary)" + } + } + }, + "caption": { + "spacing": { + "margin": { + "top": "10px", + "bottom": "0px" + } + }, + "typography": { + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "cite": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)", + "fontStyle": "inherit" + } + }, + "h1": { + "typography": { + "fontSize": "var(--wp--preset--font-size--max-36)" + } + }, + "h2": { + "typography": { + "fontSize": "var(--wp--preset--font-size--x-large)" + } + }, + "h3": { + "typography": { + "fontSize": "var(--wp--preset--font-size--large)" + } + }, + "h4": { + "typography": { + "fontSize": "var(--wp--preset--font-size--medium)" + } + }, + "h5": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "h6": { + "typography": { + "fontSize": "var(--wp--preset--font-size--small)" + } + }, + "heading": { + "typography": { + "fontWeight": "var(--wp--custom--font-weight--regular)", + "lineHeight": "var(--wp--custom--line-height--heading)" + } + }, + "link": { + "color": { + "text": "var(--wp--preset--color--contrast)" + }, + ":hover": { + "color": { + "text": "var(--wp--preset--color--contrast)" + } + } + } + }, + "spacing": { + "blockGap": "var(--wp--custom--spacing--gap)", + "padding": { + "top": "0px", + "right": "var(--wp--custom--spacing--gap)", + "bottom": "0px", + "left": "var(--wp--custom--spacing--gap)" + } + }, + "typography": { + "fontFamily": "var(--wp--preset--font-family--primary)", + "fontSize": "var(--wp--preset--font-size--medium)", + "fontWeight": "var(--wp--custom--font-weight--light)", + "lineHeight": "var(--wp--custom--line-height--body)" + } + }, + "templateParts": [ + { + "area": "header", + "name": "header", + "title": "Header" + }, + { + "area": "footer", + "name": "footer", + "title": "Footer" } - }, - "styles": { - "blocks": { - "core/buttons": { - "css": "& .is-style-outline .wp-element-button {background-color: transparent;border: 1px solid currentColor;color: var(--wp--preset--color--contrast);padding: 14px 29px;}", - "spacing": { - "blockGap": "10px" - } - }, - "core/code": { - "color": { - "background": "var(--wp--preset--color--contrast)", - "text": "var(--wp--preset--color--base)" - }, - "css": "& code {overflow-wrap: normal; overflow-x: scroll; tab-size: 4; white-space: pre !important;}", - "spacing": { - "padding": { - "bottom": "25px", - "left": "30px", - "right": "30px", - "top": "25px" - } - }, - "typography": { - "fontFamily": "var(--wp--preset--font-family--monospace)", - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "core/comment-author-name": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)", - "lineHeight": "var(--wp--custom--line-height--medium)" - } - }, - "core/comment-date": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)", - "lineHeight": "var(--wp--custom--line-height--medium)" - } - }, - "core/comment-edit-link": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)", - "lineHeight": "var(--wp--custom--line-height--medium)" - } - }, - "core/comment-reply-link": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "core/comments-title": { - "spacing": { - "margin": { - "bottom": "30px", - "top": "var(--wp--preset--spacing--medium)" - } - } - }, - "core/cover": { - "spacing": { - "padding": { - "bottom": "30px", - "left": "30px", - "right": "30px", - "top": "30px" - } - } - }, - "core/image": { - "spacing": { - "margin": { - "bottom": "30px", - "left": "0", - "right": "0", - "top": "30px" - } - } - }, - "core/list": { - "spacing": { - "padding": { - "left": "var(--wp--custom--spacing--gap)" - } - } - }, - "core/navigation": { - "elements": { - "link": { - "typography": { - "textDecoration": "none" - } - } - }, - "spacing": { - "blockGap": "var(--wp--preset--spacing--x-small)" - }, - "typography": { - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "core/paragraph": { - "css": ".has-background {padding: 20px 30px;}", - "spacing": { - "margin": "0" - } - }, - "core/post-comments-form": { - "css": "& input[type=submit] {width: auto;}" - }, - "core/post-template": { - "css": "& .wp-block-post:not(:last-of-type) {margin-bottom: var(--wp--preset--spacing--medium);}" - }, - "core/preformatted": { - "color": { - "background": "var(--wp--preset--color--contrast)", - "text": "var(--wp--preset--color--base)" - }, - "css": "{overflow-wrap: normal; overflow-x: scroll; tab-size: 4; white-space: pre !important;}", - "spacing": { - "padding": { - "bottom": "25px", - "left": "30px", - "right": "30px", - "top": "25px" - } - }, - "typography": { - "fontFamily": "var(--wp--preset--font-family--monospace)", - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "core/pullquote": { - "border": { - "color": "var(--wp--preset--color--contrast)", - "style": "solid", - "width": "1px" - }, - "spacing": { - "padding": { - "bottom": "30px", - "left": "30px", - "right": "30px", - "top": "30px" - } - }, - "typography": { - "fontSize": "var(--wp--preset--font-size--medium)" - } - }, - "core/quote": { - "border": { - "color": "var(--wp--preset--color--contrast)", - "style": "solid", - "width": "1px" - }, - "spacing": { - "padding": { - "bottom": "30px", - "left": "40px", - "right": "40px", - "top": "30px" - } - } - }, - "core/site-title": { - "elements": { - "link": { - "typography": { - "textDecoration": "none" - } - } - }, - "typography": { - "fontSize": "var(--wp--preset--font-size--large)" - } - }, - "core/social-links": { - "css": ".is-style-outline .wp-block-social-link {background-color: transparent;border: 1px solid currentColor;}", - "spacing": { - "blockGap": "10px" - } - }, - "core/spacer": { - "spacing": { - "margin": { - "top": "0 !important" - } - } - }, - "core/table": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "core/template-part": { - "spacing": { - "margin": { - "top": "0px !important" - } - } - } - }, - "color": { - "background": "var(--wp--preset--color--base)", - "text": "var(--wp--preset--color--contrast)" - }, - "elements": { - "button": { - "border": { - "radius": "5px" - }, - "color": { - "background": "var(--wp--preset--color--primary)", - "text": "var(--wp--preset--color--base)" - }, - "spacing": { - "padding": { - "top": "15px", - "right": "30px", - "bottom": "15px", - "left": "30px" - } - }, - "typography": { - "fontSize": "var(--wp--preset--font-size--x-small)", - "fontWeight": "var(--wp--custom--font-weight--regular)" - } - }, - "caption": { - "spacing": { - "margin": { - "top": "10px", - "bottom": "0px" - } - }, - "typography": { - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "cite": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)", - "fontStyle": "inherit" - } - }, - "heading": { - "typography": { - "fontWeight": "var(--wp--custom--font-weight--regular)", - "lineHeight": "var(--wp--custom--line-height--heading)" - } - }, - "h1": { - "typography": { - "fontSize": "var(--wp--preset--font-size--max-36)" - } - }, - "h2": { - "typography": { - "fontSize": "var(--wp--preset--font-size--x-large)" - } - }, - "h3": { - "typography": { - "fontSize": "var(--wp--preset--font-size--large)" - } - }, - "h4": { - "typography": { - "fontSize": "var(--wp--preset--font-size--medium)" - } - }, - "h5": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "h6": { - "typography": { - "fontSize": "var(--wp--preset--font-size--small)" - } - }, - "link": { - "color": { - "text": "var(--wp--preset--color--contrast)" - } - } - }, - "spacing": { - "blockGap": "30px", - "padding": { - "bottom": "0px", - "left": "30px", - "right": "30px", - "top": "0px" - } - }, - "typography": { - "fontFamily": "var(--wp--preset--font-family--primary)", - "fontSize": "var(--wp--preset--font-size--medium)", - "fontWeight": "var(--wp--custom--font-weight--light)", - "lineHeight": "var(--wp--custom--line-height--body)" - } - }, - "templateParts": [ - { - "area": "header", - "name": "header", - "title": "Header" - }, - { - "area": "footer", - "name": "footer", - "title": "Footer" - }, - { - "area": "uncategorized", - "name": "comments", - "title": "Comments" - } - ] + ] } diff --git a/webpack.config.js b/webpack.config.js index 2e8f9958..2d5cc4f4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -12,7 +12,7 @@ module.exports = { devtool: "eval-source-map", entry: { core: './assets/js/ash.js', - mmxxiii: path.resolve( __dirname, './assets/scss/ash.scss' ) + ash: path.resolve( __dirname, './assets/scss/ash.scss' ) }, output: { filename: '[name].js',